Kim*_*sen 2 jquery fallback cdn
这是一个快速的问题,可能会立即标记我为新手,但这里有:-)
在查看代码示例时,包括使用jquery cdn的回退,我看到使用&&或||的方法非常相似:
<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>
Run Code Online (Sandbox Code Playgroud)
和
<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>
Run Code Online (Sandbox Code Playgroud)
现在,我的问题很简单:两者之间是否存在差异(个人偏好和可读性除外)?
基本上这两个脚本执行相同的功能.他们检查CDN是否加载了jQuery,如果没有,则返回本地副本.唯一的区别是执行检查的方式.
第一个脚本
window.jQuery ||
document.write('<script src="js/vendor/jquery-1.10.2.min.js"><\/script>')
Run Code Online (Sandbox Code Playgroud)
如果jQuery无法加载,那么window.jQuery将导致undefined或者false导致布尔表达式的第二部分被评估,因为使用了||(或运算符),使得脚本的本地副本加载.这是基本or逻辑,因为当前面的||条件为假时,操作员将评估每个条件.
第二个脚本
!window.jQuery &&
document.write('<script src="js/vendor/jquery-1.10.2.min.js"><\/script>')
Run Code Online (Sandbox Code Playgroud)
这个脚本只是否定了对jQuery的检查!window.jQuery,所以如果jQuery是undefined等价的false(当被否定==为真时)它将评估布尔表达式的第二部分,导致加载本地副本.如果加载了jQuery,则布尔表达式的第一部分在否定时等效于false,导致不计算表达式的第二部分.
这是一个关于布尔逻辑如何播放的小脚本示例:
!false && alert("First condition is true evaluate me");
false || alert("First condition is false evaluate me");
false && alert("I am never evaluated since first condition is false, entire condition is false.");
true || alert("I am never evaluated since first condition is true, entire condition is true");
Run Code Online (Sandbox Code Playgroud)
布尔脚本示例: http ://jsfiddle.net/kbLfB/
| 归档时间: |
|
| 查看次数: |
723 次 |
| 最近记录: |