为什么以下代码不会将变量a增加为1?
var a =5;
function abc(y){
y++;
}
abc(a);
//a is 5 not 6 why?
但是这样做
var a = 5;
function abc(){
a++;
}
abc();
//a is 6
答案 0 :(得分:3)
因为原始值是在JavaScript中按值传递的。
要获取要更新的值,可以将a
放在一个对象上并利用对象通过引用传递的事实(好吧,大多数情况下,确实传递了一个引用的副本,但是我们不会担心这个):
var obj = { a: 5 };
function abc(o){
o.a++;
}
abc(obj);
答案 1 :(得分:1)
它接受参数,但不返回任何值。
y只是一个论据,我建议两种方法来做到这一点
var a = 10
function increase(){
a++
}
increase();
var a = 10;
function increase(a){
return a++;
}
a = increase(a);
答案 2 :(得分:0)
初学者,
简单来说,当你通过abc(a)调用函数时,'a'不传递给函数abc,但是它的值被复制到'y'。 (它被称为值传递)。由于只有'y'增加,你没有看到'a'的更新值。