首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么要两次声明jQuery?

为什么要两次声明jQuery?
EN

Stack Overflow用户
提问于 2016-04-27 10:05:32
回答 2查看 6.2K关注 0票数 79

以下代码的用途是什么?

请注意,在下面的第二个脚本代码之前,googleapis中已经包含了jquery.min.js

代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="/assets/js/vendor/jquery.min.js"><\/script>')</script>
EN

回答 2

Stack Overflow用户

发布于 2016-04-27 10:19:38

第一个脚本将尝试从外部网站(在本例中为Google CDN)加载jQuery。

第二个将尝试在window中查找jQuery对象,只有在未找到该对象时,它才会从内部链接加载库。这只是在CDN失败的情况下的一种后备。

代码语言:javascript
复制
window.jQuery || document.write(...)
// the code above means the same as the code below
if (window.jQuery === undefined) document.write(...)

在Javascript中,除了布尔值(true/false)之外,还有true和false两种值。任何与0falseundefinednull不同的东西都是真实的值。

在这种情况下,如果window上存在jQuery属性,则它将是一个对象,并且它将是一个真值,因此,第二个语句将不会运行(因为第一个语句已经为真-在OR运算符中,如果其中任何一个语句为真,它将跳过其他语句(从左到右)。

但是,如果jQuery属性不存在,那是因为第一个脚本没有正确加载,并且该属性将为undefined,这是一个错误的值。因此,第二条语句将运行,本地jQuery将作为备用加载。

票数 7
EN

Stack Overflow用户

发布于 2016-04-27 22:05:29

如果由于某些原因(如被防火墙阻止、CDN关闭等)无法访问来自CDN的jquery,则这是一种后备机制

我将再增加一个我去年遇到的实际情况。我的一个客户决定在没有互联网的情况下在局域网中托管和使用我创建的web应用程序。对于本地IIS,应用程序被正确部署,但由于CDN不可用而失败,如果我使用了有问题的代码,web应用程序将在第一次运行时无需任何更改。

我希望它现在是有意义的:)对我来说,这是一个教训。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36879025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档