闭包返回函数不会改变作用域变量

你好,世界
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

为什么最后一行返回 9 而不是 11 因为 x 在同一范围内?

昆汀

y:x表示“将 的当前值复制x到属性y”。

当时的价值是9

对 值的后续更改x不会更改 的值y


您可以将getX函数更改为 modify this.y,也可以将y属性更改为读取 的当前值的 getter 函数x

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章