0
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
xが同じスコープにあるので、最後の行が11ではなく9を返すのはなぜですか?クロージャー戻り関数はスコープ付き変数を変更しません
ありがとうございました。xを返す関数としてyの2番目のオプションを試してみましたが、両方の関数が同じxを共有しています。関数としてのyがx valriableを変更した場合、getterXは更新された値も持ちます。したがって、returnメソッドのDiffernt関数が変数を共有すると仮定するのは安全ですが、代入が変数の場合は別のコピーになりますか? – helloworld