你能确认/解释一下吗?
如果jQuery包含 之后的js文件,js文件中的任何jQuery都不会执行,因为尚未包含jQuery:
<script src="js_test.js" type="text/javascript"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
然后,如果我的javascript文件如下所示:
alert('javascript is working');
(function(){
alert('ordinary javascript in self-invoked function');
})();
$(function() {
alert('this is jQuery');
});
...将执行两个javascript警报(而不是jQuery警报)。
但如果我把jQuery放在最上面,就像这样:
$(function() {
alert('this is jQuery');
});
alert('javascript is working');
(function(){
alert('ordinary javascript in self-invoked function');
})();
..然后剩下的javascript也是而不是。
所以规则似乎是如果jQuery包含不正确,javascript文件将被读取到任何jQuery出现的点,然后它停止读取脚本。这是真的吗?
我认为无论如何都能读取脚本并执行严格基于javascript的代码。
答案 0 :(得分:2)
如果错误地或不包含jQuery,这段代码会产生错误:
$(function() {
alert('this is jQuery');
});
那是因为$
尚未定义(尚未)。如果出现错误,JavaScript执行只会停止,因此该行之后的所有内容都不会被执行。
事件处理程序仍将执行,因此应用程序不会完全无法使用。
答案 1 :(得分:1)
在解析Javascript文件时,解释器将停止任何解析错误,并且将跳过整个脚本,并且不会执行任何操作,因为无法解析脚本(这不是您发生的事情,但我' m包括完整性)。
但是,对于运行时错误(这是您正在经历的错误),脚本将正确解析并因此加载,但只会执行直到第一个运行时异常,然后该异常后的其余脚本将不会执行。
因此,在您的情况下,您的脚本将执行,直到它到达需要jQuery的东西(这是您的脚本中的$(...)
函数调用,并且因为jQuery尚未加载,它将引发异常(尝试调用不存在的函数。
这里的解决方案似乎很简单。只需在jQuery已经加载之后放置任何需要jQuery的脚本。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="js_test.js" type="text/javascript"></script>
答案 2 :(得分:0)
这是因为调用时$
未定义,导致代码的其余部分无法继续。右键单击页面,单击“检查元素”。并点击“控制台”&#39;标签。你有疑问吗?!