HTML5 Boilerplate jQuery库后备如何工作?

时间:2013-08-11 15:03:12

标签: javascript jquery html5 boilerplate

这是一个关于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声明或任何暗示。如果这听起来很愚蠢,我很抱歉。有什么帮助吗?

2 个答案:

答案 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属性的脚本标记以加载它。