在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

在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); // 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
也会做同样的事情。