gpt4 book ai didi

jQuery .globalEval() 函数

转载 作者:行者123 更新时间:2023-12-03 22:04:52 25 4
gpt4 key购买 nike

我在浏览 jQuery 源代码时偶然发现了函数.globalEval()。有很简短documentation我不明白。显然,它“对于动态加载外部脚本很重要”。为什么?来源也有些模糊:

globalEval: function( data ) {
if ( data && rnotwhite.test( data ) ) {
// We use execScript on Internet Explorer
// We use an anonymous function so that context is window
// rather than jQuery in Firefox
( window.execScript || function( data ) {
window[ "eval" ].call( window, data );
} )( data );
}
},

人们在现实生活中真的使用这个吗?如果是这样,为了什么?

最佳答案

顾名思义,它用于在全局上下文中执行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 脚本,并且想要在全局上下文中执行该脚本(例如,上面,我们可能需要 example1example 函数,所以我们必须使用 globalEval

我不确定为什么 jQuery 源使用 window[ "eval"].call 而不仅仅是 eval.call,但我确信有人可以解释:)

关于jQuery .globalEval() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7921851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com