n00b 问题在这里:
假设你像这样调用一个更新数字或字符串的函数
var x = "well";
var helloify = function(str){
str += "hello"
};
我期望这种行为:
helloify(x);
console.log(x)
\\ "well hello"
但是我得到了
\\ "well"
“+=”不会改变“x”的值吗?这种变化是否只在功能范围内持续存在,而不会在全局环境中持续存在?
谢谢!
--困惑
最佳答案
当您调用 helloify(x);
时,您传递的是 x
的值(字符串)而不是引用 到 x
。
str += "hello"
修改 str
并单独保留 x
。
注意:对象仅通过引用寻址,因此如果 x
是对对象的引用,那么您将修改由两个变量寻址的单个对象。虽然简单的字符串不是对象。
关于javascript - javascript中函数内部的突变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33465324/