javascript 每次计算包含数组字面量的表达式
javascript evaluate the expression containing the array literal each time
If an array is created using a literal in a top-level script, JavaScript interprets the array each time it evaluates the expression containing the array literal.
来源:MDN, "Values, variables, and literals"
没看懂
谁能详细举个例子
在不了解更多上下文的情况下,很难说出作者的意思。 (我检查过,该文本不是来自规范。) 好的,现在我们知道引用的来源,我已经检查过,下面适用。
假设你有这个脚本:
var a = [1, 2, 3];
每次评估该脚本时,都会评估该数组初始化程序 ("literal")。该数组不会被创建一次并被缓存。在浏览器应用程序中,很少会在不重新加载整个环境的情况下重新评估顶级脚本,但是 可能 这样做,如果这样做,每次都会创建一个新数组。
我不知道为什么引用会说“...在顶级脚本中...”,因为这在任何地方都是正确的。例如:
function foo() {
var a = [1, 2, 3];
// ...
}
每次调用 foo
都会产生一个 new 数组。与所有表达式一样,该表达式在每次遇到时都会被求值。 (在 ES3 规范中围绕正则表达式文字存在一个错误,但在 ES5 中已修复。)
If an array is created using a literal in a top-level script, JavaScript interprets the array each time it evaluates the expression containing the array literal.
来源:MDN, "Values, variables, and literals"
没看懂
谁能详细举个例子
在不了解更多上下文的情况下,很难说出作者的意思。 (我检查过,该文本不是来自规范。) 好的,现在我们知道引用的来源,我已经检查过,下面适用。
假设你有这个脚本:
var a = [1, 2, 3];
每次评估该脚本时,都会评估该数组初始化程序 ("literal")。该数组不会被创建一次并被缓存。在浏览器应用程序中,很少会在不重新加载整个环境的情况下重新评估顶级脚本,但是 可能 这样做,如果这样做,每次都会创建一个新数组。
我不知道为什么引用会说“...在顶级脚本中...”,因为这在任何地方都是正确的。例如:
function foo() {
var a = [1, 2, 3];
// ...
}
每次调用 foo
都会产生一个 new 数组。与所有表达式一样,该表达式在每次遇到时都会被求值。 (在 ES3 规范中围绕正则表达式文字存在一个错误,但在 ES5 中已修复。)