Javascript 为什么是';使用严格的';导致函数未定义
我有一个部分正在加载两个脚本。第二个脚本调用第一个脚本中的函数。。。两个脚本的顶部都使用“use strict;”。当第二个脚本调用第一个脚本中的函数时,我得到一个“uncaughtreferenceerror函数名未定义” 起初我认为这与脚本的顺序有关,但经过一些调试后,我发现脚本的执行顺序是正确的。部分内容通过jquery异步调用加载,并附加到当前视图中。此外,我可以在chrome的调试器中调用第一个脚本的函数,直到加载第二个文件为止 我有点疯了,把所有的东西都删掉了,现在还在发生。这是我的工作内容 脚本1Javascript 为什么是';使用严格的';导致函数未定义,javascript,use-strict,Javascript,Use Strict,我有一个部分正在加载两个脚本。第二个脚本调用第一个脚本中的函数。。。两个脚本的顶部都使用“use strict;”。当第二个脚本调用第一个脚本中的函数时,我得到一个“uncaughtreferenceerror函数名未定义” 起初我认为这与脚本的顺序有关,但经过一些调试后,我发现脚本的执行顺序是正确的。部分内容通过jquery异步调用加载,并附加到当前视图中。此外,我可以在chrome的调试器中调用第一个脚本的函数,直到加载第二个文件为止 我有点疯了,把所有的东西都删掉了,现在还在发生。这是我的
"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调试器,执行“firstScript()”或“secondScript()”会抛出相同的错误
但是,如果我拿出
使用strict
在两个文件上都有效。这到底是怎么回事?在阅读了巴尔马的评论后,我们进一步挖掘了一下。分部中包含的任何标记都是由函数计算的,函数当然使用eval()
我的脚本使用的“use strict”
和的一个特性“使用严格”
是为了防止eval()
影响全局范围,这就是为什么我得到了未定义的函数。这些脚本文件真的是完整的内容吗?它们的顺序正确吗?例如,在包含之前是否调用secondScript
?我将它与asp.net一起使用以获取实际的content@Pointy是的,我实际上是从我的文件中复制并粘贴了该部分:|@EBrown现在我甚至没有在脚本中调用它。我只是触发这个加载脚本的事件,然后尝试从chrome的调试器控制台调用它。比如,如果我使用“use script”,函数就不属于全局函数列表的一部分,但是我找不到任何关于“use script”的东西可以阻止这种情况发生。同样,如果我删除两个文件中的“使用脚本”,效果会很好