【发布时间】:2016-02-01 14:39:20
【问题描述】:
n00b 问题在这里:
假设你调用一个函数来更新这样的数字或字符串
var x = "well";
var helloify = function(str){
str += "hello"
};
我希望这种行为:
helloify(x);
console.log(x)
\\ "well hello"
但是我得到了
\\ "well"
“+=”不会改变“x”的值吗?这种变化是否只存在于函数的范围内而不存在于全局环境中?
谢谢!
--困惑
【问题讨论】:
-
""+=" 不会改变 "x" 的值吗?" 在这种情况下不是。它改变了
str的值。但是,str只是复制了x的值。这两个变量是完全独立的,彼此不知道。 -
Primitives 是按值传递的,也就是说你进入一个函数实际上是一个外部原始值的副本。
标签: javascript scope mutation