var y;
function modify(x) {
var z = 5;
x += 2;
y += x + z
}
var x = 1,
y = 2,
z = 3
modify(x)
上面的片段结果是x=1,y=10,z=3,请解释这段代码。提前致谢
在modify函数中,“x”在modify的作用域中,而不是在全局作用域中使用x。此外,基元类型(如数字)是通过值而不是引用传递的。因此,x总是保持1。
同样在modify函数中,您要在modify函数的作用域中声明一个新的变量z,所以就像x一样,z将保持为3。
由于函数中没有声明y,它将使用全局作用域,所以这是唯一要改变的作用域。在这个例子中,它是2+((1+2)+5),这就是你得到10的方法。