Javascript 闭包返回函数不';t更改作用域变量
为什么最后一行返回9而不是11,因为x在同一范围内Javascript 闭包返回函数不';t更改作用域变量,javascript,closures,Javascript,Closures,为什么最后一行返回9而不是11,因为x在同一范围内 y:x表示“将x的当前值复制到属性y” 此时的值为9 对x值的后续更改不会更改y的值 您可以将getX函数更改为修改this.y,也可以将y属性更改为读取x当前值的getter函数,谢谢。。当我尝试将y的第二个选项作为返回x的函数时,我看到两个函数共享相同的x。如果y作为一个函数对x值进行了任何更改,则getterX也具有更新的值。所以,假设返回方法中的不同函数共享变量是否安全,但当赋值作为变量时,它是一个单独的副本? function te
y:x
表示“将x
的当前值复制到属性y
”
此时的值为9
对x
值的后续更改不会更改y
的值
您可以将
getX
函数更改为修改this.y
,也可以将y
属性更改为读取x
当前值的getter函数,谢谢。。当我尝试将y的第二个选项作为返回x的函数时,我看到两个函数共享相同的x。如果y作为一个函数对x值进行了任何更改,则getterX也具有更新的值。所以,假设返回方法中的不同函数共享变量是否安全,但当赋值作为变量时,它是一个单独的副本?
function testLet(){
var x=9;
return{
y:x,
getX: function(){
return ++x;
},
}
}
var obj = new testLet();
console.log(obj.y); //9 as expected
console.log(obj.getX()); //10 as expected
console.log(obj.getX()); //11 as expected
console.log(obj.y); //I expect it 11.. but it stays 9