以下代码的用途是什么?
请注意,在下面的第二个脚本代码之前,googleapis
中已经包含了jquery.min.js
。
<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>
发布于 2016-04-27 10:19:38
第一个脚本将尝试从外部网站(在本例中为Google CDN)加载jQuery。
第二个将尝试在window
中查找jQuery对象,只有在未找到该对象时,它才会从内部链接加载库。这只是在CDN失败的情况下的一种后备。
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两种值。任何与0
、false
、undefined
和null
不同的东西都是真实的值。
在这种情况下,如果window上存在jQuery
属性,则它将是一个对象,并且它将是一个真值,因此,第二个语句将不会运行(因为第一个语句已经为真-在OR
运算符中,如果其中任何一个语句为真,它将跳过其他语句(从左到右)。
但是,如果jQuery
属性不存在,那是因为第一个脚本没有正确加载,并且该属性将为undefined
,这是一个错误的值。因此,第二条语句将运行,本地jQuery将作为备用加载。
发布于 2016-04-27 22:05:29
如果由于某些原因(如被防火墙阻止、CDN关闭等)无法访问来自CDN的jquery,则这是一种后备机制
我将再增加一个我去年遇到的实际情况。我的一个客户决定在没有互联网的情况下在局域网中托管和使用我创建的web应用程序。对于本地IIS,应用程序被正确部署,但由于CDN不可用而失败,如果我使用了有问题的代码,web应用程序将在第一次运行时无需任何更改。
我希望它现在是有意义的:)对我来说,这是一个教训。
https://stackoverflow.com/questions/36879025
复制相似问题