использовать свойство.GetConstantValue () для получения значения
Точка этого - то, что любые переменные, объявленные в интересном материале, не будут созданы в глобальном пространстве имен. Любая функция в JavaScript создаст такой объем. Предположим, что у Вас есть некоторый JavaScript, который Вы хотите запустить. Если Вы делаете это:
var b = 1;
// stuff using b
И некоторый другой код использует b, это получит Ваше перенесенное значение. (Или, еще хуже, если некоторые другие кодовые наборы b перед Вашими выполнениями кода, то попытки получить его старое значение позже, Вы изменили бы его тем временем.)
, С другой стороны, если у Вас есть этот код, который объявляет и затем вызывает функцию:
function a() {
var b = 1;
}
a();
И некоторый другой код позже использует b, он не будет видеть Ваши значения, так как b локален для функции. Проблема с этим, конечно, состоит в том, что Вы все еще делаете глобальное имя - "a" в этом случае. Так, мы хотим функцию без имени - это - то, почему Вы получаете код, который Вы описали. Это объявляет функцию без имени и затем называет его.
, К сожалению, Вы не можете просто сказать:
function() { ... }()
, потому что это будет проанализировано как оператор объявления функции и затем синтаксическая ошибка. Путем обертывания объявления функции в круглую скобку Вы получаете функцию выражение , которое можно тогда назвать. Вы называете его как любое другое выражение function (как a, выше), с помощью второго набора parens. Например, если бы функция взяла аргументы, то Вы передали бы их туда:
(function(a) { ... })(1)
То средство конструкции объявляет анонимную функцию и сразу выполняет ее. Причина Вы помещаете свой код в теле функции, состоит в том, потому что переменные, которые Вы определяете в нем, остаются локальными для функции и не как глобальные переменные. Однако они все еще будут видимы к закрытиям, определенным в этой функции.
Вставление объявления функции parens создает выражение, которое оценивает к анонимной функции в. Поэтому первое вводное оценивает к функции.
"пустые parens" в конце вызывают определенную функцию, таким образом, "//делают интересный материал" сразу выполняется.
Это - способ выполнить код на лету, также не допуская переменные в глобальную область видимости.
то, Что проиллюстрировано здесь, однако, не имеет никакого отношения к закрытиям - по крайней мере, не непосредственно. Закрытия о поддержании лексического контекста после того, как родительская функция уже вышла.
parens вокруг функции проясняют, что функция является выражением. parens после являются вызовом к функции.
Уведомление, что функция не имеет имени.
Это создает функцию, называет ее и отбрасывает ее.
могло бы быть более ясно, смотрите ли Вы на него как это:
var throwaway = function(){
// do cool stuff
};
throwaway();
Это сделано для создания частного пространства имен. Код в функции может иметь функции и переменные, не вызывая беспокойство о конфликте с другим кодом, загруженным на странице.