Перво-наперво: строка animal = animal++
ничего не будет делать, потому что это постфиксный шаг.Либо просто введите animal++
или ++animal
, чтобы увеличить его.
Нет, dog
не изменится.JavaScript передает примитивы по значению (спасибо @ASDFGerte за исправление).
var dog = 0;
function dogStuff(animal) {
animal++;
}
dogStuff(dog);
console.log(dog); // prints 0
То, что вы хотите сделать (вероятно), похоже на упомянутое @alfasin: вернуть обновленное значениеof dog.
var dog = 0;
function dogStuff(animal) {
animal++;
return animal;
}
dog = dogStuff(dog);
console.log(dog); // prints 1
Однако, если вы передадите объект и переназначите его свойства, исходный объект будет изменен ( почти как передача по ссылке ):
var dog = { age: 0 };
function incrementAge(animal) {
animal.age++;
}
incrementAge(dog);
console.log(dog.age); // prints 1
edit : Если вы хотите присвоить несколько переменных при возврате, один из возможных способов сделать это - вернуть массив переменных, которые затем могут быть назначены с помощью деконструированное присваивание :
var dog = 0;
var cat = 52;
function incrementTwoAnimals(animal1, animal2) {
animal1++;
animal2++;
return [animal1, animal2];
}
[dog, cat] = incrementTwoAnimals(dog, cat); // deconstructed assignment
console.log(dog, cat); // prints 1, 53