Ответ 1
Он используется, как следует из названия, для выполнения кода eval
в глобальном контексте. Например, рассмотрим следующее (jsFiddle):
function example(){
$.globalEval("var example1 = 'first';");
eval("var example2 = 'second';");
console.log("In function: " + example1); //Prints 'first'
console.log("In function: " + example2); //Prints 'second'
}
example();
console.log("Global: " + example1); //Prints 'first'
console.log("Global: " + example2); //ReferenceError
Поскольку example1
был определен с помощью globalEval
, он находится в глобальной области. Используя обычный обычный eval
, переменная доступна только в области, в которой вызывается eval
.
Может быть полезно, если вы хотите загрузить другой JS script, и вы хотите выполнить это script в глобальном контексте (например, выше, нам может понадобиться example1
, чтобы быть доступным вне example
, поэтому мы должны использовать globalEval
.
Я не уверен, почему источник jQuery использует window[ "eval" ].call
вместо просто eval.call
, но я уверен, что кто-то может объяснить:)