我遇到了这段代码,不明白为什么块中的代码像自动执行函数一样被包裹在括号中。
function foo(a,b) {
var b = b || window,
a = a.replace(/^\s*<!(?:\[CDATA\[|\-\-)/, "/*$0*/");
if (a && /\S/.test(a)) {
(b.execScript || function (a) {
b["eval"].call(b, a)
})(a);
}
}
第一个参数是来自脚本标签的文本。我不明白的唯一部分是为什么脚本 eval 被包裹在括号中。