我有一部分正在加载两个脚本。第二个脚本在第一个脚本中调用一个函数......两个脚本都使用" use strict;"在顶部。当第二个脚本在第一个脚本中调用该函数时,我得到一个"未捕获的ReferenceError 函数名称未定义"。
起初我认为它与脚本的顺序有关,但经过一些调试后我发现脚本按正确的顺序执行。部分加载通过jquery异步调用,并且只是附加到当前视图。另外,我可以在chrome的调试器中调用第一个脚本函数,直到加载第二个文件。
我有点疯狂,只是砍掉了所有东西而且它还在发生。这就是我与之合作的内容......
脚本1
"use strict";
var firstScript = function () {
alert("first");
};
脚本2
"use strict";
var secondScript = function () {
alert("second");
};
Ajax调用
$.ajax({
type: "post",
url: "/../SomeController/SomeAction",
success: function (content) {
$("#someDiv").html(content);
}
});
部分
<script src="~/Some/Folder/Js/Script1.js"></script>
<script src="~/Some/Folder/Js/Script2.js"></script>
页面加载后,我打开chrome调试器并执行&#34; firstScript()&#34;或&#34; secondScript()&#34;抛出同样的错误。
但是,如果我在两个文件上取出use strict;
,它们都可以正常工作。到底发生了什么?
答案 0 :(得分:1)
在阅读巴马尔的评论后挖了一下。部分中包含的所有标记都由jquery's globalEval函数评估,当然使用eval()
我的脚本"use strict";
,而"use strict";
的一个功能是阻止eval()
1}}影响全局范围,这就是我得到未定义函数的原因。