这是一个关于html5样板的初学者问题,以及一般的javascript,但我似乎无法在任何地方找到答案,所以这里就是......
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/vendor/jquery-1.10.2.min.js"><\/script>')</script>
第二个脚本行如何检查是否已加载Google的CDN?没有if声明或任何暗示。如果这听起来很愚蠢,我很抱歉。有什么帮助吗?
答案 0 :(得分:3)
在这种情况下,||
是if语句。如果window.jQuery
返回TRUE
,那么or
语句(||)之后的任何内容都不会被加载。如果它是FALSE
,那么它将继续加载jquery。
编辑:只是澄清一下。如果你在javascript中执行if (var1 && var2)
,它将评估两个变量以检查它们是否都是真的。如果你使它if (var1 || var2)
,那么如果第一个变量的计算结果为TRUE,则不需要计算表达式的其余部分,因为无论如何它都会自动为真。
在这种情况下,这正是您的代码正在做的事情。如果window.jQuery
为FALSE(意味着未加载jQuery),则继续并评估下一个表达式 - 在这种情况下,从本地文件加载jquery。它只是没有包含在IF语句中,因为它没有必要。
答案 1 :(得分:2)
如果加载了谷歌CDN或任何地方的jQuery文件,则会向jQuery
对象添加属性window
。脚本的第二行检查是否定义了window.jQuery
,如果没有,则执行||
语句的另一部分,该语句添加具有本地jQuery文件位置src属性的脚本标记以加载它。