2014年7月15日修订MDN指南,用于处理对象,指出:
如果在顶级脚本中使用对象初始值设定项创建对象,则JavaScript每次评估包含对象文字的表达式时都会解释该对象.
但是,在下面的代码段中,当objLit2.val2评估时,它不使用应该10和的最后一个值集100; 它改为使用1000哪个objLit2是定义时声明的值.为什么会这样?
var i = 1000;
function iPlus3() {
alert("iPlus3");
return i + 3;
}
var objLit2 = {
val: iPlus3,
val2: i = i + 1
};
function setValue() {
i = 10;
console.log("objLit2Val1", objLit2.val(), objLit2.val2); // Outputs 13 1001 and not 13 11
i = 100;
console.log("objLit2Val2", objLit2.val(), objLit2.val2); // Outputs 103 1001 and not 103 101
// If `val` is interpreted at the …Run Code Online (Sandbox Code Playgroud)