2015-01-09 3 views
0

Если массив создается с использованием литерала в скрипте верхнего уровня, JavaScript интерпретирует массив каждый раз, когда он оценивает выражение, содержащее литерал массива.javascript каждый раз оценивает выражение, содержащее литерал массива каждый раз

Источник: MDN, "Values, variables, and literals"

Я не могу понять, это хорошо.
Кто-то может дать мне пример подробно.

+0

@AmitJoki Цитата из [здесь] (https://developer.mozilla.org/ ru-US/docs/Web/JavaScript/Guide/Значения, _переменные, _and_literals # Array_literals) – Andreas

+0

@Andreas ok. Спасибо –

ответ

3

Не зная больше контекста, трудно сказать, что имел в виду автор. (Я проверил, что текст не из спецификации.) Итак, теперь мы знаем источник цитаты, я проверил, и применяется нижеследующее.

Скажет, у вас есть этот скрипт:

var a = [1, 2, 3]; 

Каждый раз, когда сценарий оценивается, что массив инициализатор («буквальный») вычисляются. Массив не создается один раз и не кэшируется. В приложениях для браузера редко можно переоценить сценарий верхнего уровня без перезагрузки всей среды, но для этого нужно сделать , и если вы создаете новый массив, каждый раз создавайте его.

Я не знаю, почему цитата скажет «... в сценарии верхнего уровня ...», поскольку это верно где угодно. Например:

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

    // ... 
} 

Каждый вызов foo приводит к нового массива. Выражение, как и все выражения, оценивается каждый раз, когда оно встречается. (В этом отношении была ошибка в спецификациях ES3 в отношении регулярных выражений, но она была исправлена ​​в ES5.)

+0

спасибо. Я сбился с толку. Литерал массива, конечно, будет оцениваться каждый раз. – dylan

+0

@kuma: Не по себе, это предложение действительно странно. :-) –

Смежные вопросы