javascript 每次计算包含数组文字的表达式

标签 javascript arrays expression evaluate

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];

每次评估该脚本时,都会评估该数组初始值设定项(“文字”)。该数组不是一次性创建并缓存的。在浏览器应用程序中,很少会在不重新加载整个环境的情况下重新评估顶级脚本,但可能这样做,并且如果这样做,每次都会创建一个新数组。

我不知道为什么引用会说“...在顶级脚本中...”,因为这在任何地方都是如此。例如:

function foo() {
    var a = [1, 2, 3];

    // ...
}

每次调用 foo 都会产生一个数组。与所有表达式一样,该表达式在每次遇到时都会被求值。 (ES3 规范中有一个关于正则表达式文字的错误,但在 ES5 中已修复。)

关于javascript 每次计算包含数组文字的表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27856915/

相关文章:

arrays - 如何使用 sorted 对元组数组进行排序? (无法使用类型参数列表调用 'sorted')

c# - 好奇心 : Why does Expression<. ..> 编译时运行速度比最小 DynamicMethod 快?

c++ - 在 ‘)’ token G++ 之前预期为 ‘;’

java - 如何使用插件扩大 Eclipse Java 编辑器的功能?

javascript - 如何将单个JSON文件加载到SproutCore模型中?

javascript - Angularjs - $location.path/$location.url 更改 URL 但不刷新页面

javascript - 动画化div的居中

javascript - Node.js Web 服务是什么样的?

c++ - 将 .txt 文件中的 char 值读入数组 C++ 时出错

android - 如何获取json对象和数组值?