在Javascript中不使用函数或使用函数更新全局变量之间的区别
在Javascript中更新(全局)变量值的这两种方法之间有什么区别在Javascript中不使用函数或使用函数更新全局变量之间的区别,javascript,return,Javascript,Return,在Javascript中更新(全局)变量值的这两种方法之间有什么区别 var a = true; a = false; // UPDATING WITH FUNCTION/RETURNING console.log(a); // false var changeAndReturna = function(p) { p = false; console.log(p); return p; }; changeAndReturna(a); // UPDATI
var a = true;
a = false; // UPDATING WITH FUNCTION/RETURNING
console.log(a); // false
var changeAndReturna = function(p) {
p = false;
console.log(p);
return p;
};
changeAndReturna(a); // UPDATING WITH FUNCTION/RETURNING // false
主要区别在于,第二个示例根本不更新
a
:
var a=true;
var CHANGERANDRETURNA=函数(p){
p=假;
控制台日志(p);
返回p;
};
a(a);
console.log(a);//仍然正确
主要区别在于第二个示例根本没有更新a
:
var a=true;
var CHANGERANDRETURNA=函数(p){
p=假;
控制台日志(p);
返回p;
};
a(a);
console.log(a);//仍然正确
在这里,我们通过传递值方法调用函数,因此它不会更改a
的值
请参阅代码中的注释
var a=1;
a=2;
console.log(“a不带func=“+a”);
var CHANGERANDRETURNA=函数(p){
p=3;
//a=3;//如果在此处更新值,则首先在func中搜索var“a”,如果无法获取任何变量,则全局搜索“a”,并将值3赋给“a”。
console.log(“内部函数=”+p);
返回p;
};
//a=变更和变更a(a)//在这里,您可以使用func的返回值指定“a”
console.log(“ruturn val of func=“+changeanderurna(a))//这里我们将传递值作为“传递值”方法。
console.log(“func调用后,a=“+a”);//如果在函数内部或使用返回值更改“a”的值,则它将显示更新后的值。
这里,我们通过传递值方法调用函数,因此它不会更改a
的值
请参阅代码中的注释
var a=1;
a=2;
console.log(“a不带func=“+a”);
var CHANGERANDRETURNA=函数(p){
p=3;
//a=3;//如果在此处更新值,则首先在func中搜索var“a”,如果无法获取任何变量,则全局搜索“a”,并将值3赋给“a”。
console.log(“内部函数=”+p);
返回p;
};
//a=变更和变更a(a)//在这里,您可以使用func的返回值指定“a”
console.log(“ruturn val of func=“+changeanderurna(a))//这里我们将传递值作为“传递值”方法。
console.log(“func调用后,a=“+a”);//如果您在函数内部或使用返回值更改“a”的值,它将显示更新后的值。
术语是按值传递,而不是按值调用。术语是按值传递,而不是按值调用。谢谢@t-j-crowder,您的解释非常清楚,非常有帮助!但是,为什么这个例子()有效?@AmintaCode:是什么让你认为它有效?代码基本上是胡说八道。但它所做的一件事是将ScrollyMount
更改为255
,因为它直接分配给它(就像我上面的评论“……或者,因为a是全局的,所以在函数中分配给a。这通常是一种糟糕的做法……”。但是,整个changeMyVariable
函数是没有意义的,直接调用console.log
也会做同样的事情。谢谢,@t-j-crowder,你的解释非常清楚,非常有用!但是,为什么这个例子()有效?@AmintaCode:是什么让你认为它有效?代码基本上是胡说八道。但它所做的一件事是将ScrollyMount
更改为255
,因为它直接分配给它(就像我上面的评论“……或者,因为a是全局的,所以在函数中分配给a。这通常是一种糟糕的做法……”。但是整个changeMyVariable
函数是没有意义的,直接调用console.log
也会做同样的事情。