gpt4 book ai didi

javascript - JS var 函数

转载 作者:行者123 更新时间:2023-12-01 02:21:47 24 4
gpt4 key购买 nike

请看下面的代码:

var test = {

test2 : {
variable: 'hello world',

test3: {
test4 : test.test2.variable
},

echo : function() {
alert(test.test2.test3.test4);
}
}

};

test.test2.echo();

jsfiddle

为什么 test4 无法访问变量:

test4 : test.test2.variable 

也请随意修改我的标题,我找不到更好的标题。

谢谢!

最佳答案

test 在评估 test.test2.variable 时是 未定义

表达式是由内而外计算的,因此您的代码按以下顺序执行以下操作:

  1. 创建一个对象
  2. 创建一个对象
  3. 变量属性附加到(2)
  4. 创建另一个对象
  5. test4 属性附加到 (4),其值是评估 test.test2.variable 的结果(此失败,因为测试是直到 (1)) 才分配
  6. test3 属性附加到第一个值为 (4) 的属性
  7. 创建函数实例
  8. echo 属性附加到 (2)
  9. 将指向 (2) 的 test2 属性附加到 (1)
  10. 将 (1) 赋给变量 test

如果您可以依赖现代浏览器并且不太可能经常读取(5),那么您可以使用如下的 getter 来延迟对 (5) 的求值,或者您可以在 test 正确初始化后分配它。

 var test = { 
test2: {
variable: "foo",
test3: {
get test4 () { return test.test2.variable; }
}
}
};

或者更加向后兼容

 var test = {
test2: {
variable: "foo",
test3: {
test4: null
}
}
}
test.test2.test3.test4 = test.test2.variable;

关于javascript - JS var 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15667398/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com