javascript - "The element expressions in an array initializer are evaluated each time the array initializer is evaluated"这句话是什么意思?

标签 javascript arrays

我正在阅读 David Flanagan 的《JavaScript:权威指南》,这可能是世界上最厚的 JavaScript 书。在简要描述数组初始值设定项时,弗拉纳根说“每次数组初始值设定项时都会评估数组初始值设定项中的元素表达式 被评估”。这是什么意思。我的实践结果让我更加困惑:

var a = 50;    
var b = 70;

var array = [a+b, 50];
console.log (array [0]);  //120

a = 60;
console.log (array [0]);  //120

var other = array;
console.log (other [0]);  //120

我认为将 a 的值更改为 60 后结果将是 130,因为表达式将被重新计算。但事实并非如此。我知道我完全搞错了。有人能解释一下弗拉纳根在这句话中试图解释什么吗?

最佳答案

他的意思是,当数组文字表达式被(“重新”-)计算时,它的内容也将被计算。

function makeArray() {
    return [a];
}
var a = 0;
console.log(makeArray()); // [0]
a = 1;
console.log(makeArray()); // [1]

所以,实际上没什么特别的,只是默认的表达行为。

关于javascript - "The element expressions in an array initializer are evaluated each time the array initializer is evaluated"这句话是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35122439/

相关文章:

javascript - 错误: ArrayBuffer is undefined

javascript - 基本显示数组值?

javascript - 单击其特定列以及 colspan 属性时启用获取单元格标题名称

javascript - 如何使用变量args调用类方法

javascript - 查找 javascript 数组的维数

c++ - 在 C++ 中向数组添加元素

python - 有没有一种好方法可以将某个非零值周围的数字列表/矩阵 'flip' ?

javascript - Highcharts 以一种奇怪的方式分解我的数据数组

javascript - 尝试使用 underscore.js 从该 json 中提取名称

c++ - 我怎样才能在 C++ 中将一个字符转换为数组字符