小编Ank*_*kit的帖子

为什么每次读取属性时都不会重新评估对象初始值设定项中的表达式?

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)

javascript function javascript-objects

5
推荐指数
1
解决办法
248
查看次数

标签 统计

function ×1

javascript ×1

javascript-objects ×1