Array Literals何时创建?MDN相关描述疑问解答
JavaScript数组字面量的创建时机解析
顶级脚本中的数组字面量
顶级脚本(比如直接在<script>标签、模块顶层的代码)里的数组字面量,每次包含它的表达式被执行计算时,都会创建一个全新的数组实例。
举个例子:
// 顶级环境代码 let lastArr; for (let i = 0; i < 3; i++) { const currentArr = [1, 2, 3]; // 每次循环的currentArr都是新对象,和上一次的不相等 console.log(currentArr === lastArr); // 第一次输出undefined,后两次输出false lastArr = currentArr; }
哪怕字面量的内容完全一样,只要执行到它所在的代码位置,就会重新生成数组。
函数中的数组字面量
如果数组字面量写在函数内部,每次调用这个函数时,都会创建一个新的数组实例。
示例代码:
function createArray() { return ["a", "b", "c"]; } const arrA = createArray(); const arrB = createArray(); // arrA和arrB是两个独立的数组对象 console.log(arrA === arrB); // false
哪怕函数逻辑没有变化,每次调用都会重新解析字面量,生成新数组。
核心总结
数组字面量不是预先创建好的静态对象,它是在代码执行流到达它所在的位置时,才动态创建数组实例——顶级代码里每次执行到该表达式、函数里每次调用函数,都会触发一次新数组的创建。
内容的提问来源于stack exchange,提问作者Tarun Dhiman
相关产品推荐
相关产品推荐

