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

时间:2015-01-09 08:59:41

标签: javascript arrays expression evaluate

  

如果使用顶级脚本中的文字创建数组,则JavaScript每次评估包含数组文字的表达式时都会解释该数组。

来源:MDN, "Values, variables, and literals"

我无法理解。
有人可以详细给我一个例子。

1 个答案:

答案 0 :(得分:3)

在不了解更多背景的情况下,很难说出作者的意思。 (我查了一下,那个文字不是来自规范。)好的,现在我们知道了引用的来源,我已经检查了,以下情况适用。

说你有这个脚本:

var a = [1, 2, 3];

每次评估该脚本时,都会评估该数组初始化程序(“literal”)。数组不会创建一次并缓存。在浏览器应用程序中,很少重新评估顶级脚本而不重新加载整个环境,但是可能来执行它,如果你这样做,每次都会创建一个新的数组。

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

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

    // ...
}

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