jrh*_*ath 10 javascript jquery jquery-ui
我正在查看jQuery UI代码,我发现每个文件都以这样的结构开头:
;jQuery.ui || (function($) {
Run Code Online (Sandbox Code Playgroud)
我的问题是:为什么之前有分号jQuery,为什么逻辑OR正在完成?
JRH
Jam*_*mes 21
为什么jQuery之前有分号?
分号用于确保安全的文件串联.(库和库组件经常打包到一个文件中)
为什么逻辑OR正在完成?
只有当语句的左侧评估为falsey值时,右侧的自调用匿名函数才会运行.因此,如果jQuery.ui页面上已存在,则该函数将不会运行.它只在jQuery.ui尚不存在时运行.
我猜这;是为了确保javascript打包器不会弄乱线路,但这是我所拥有的最好的.
逻辑或是确保jQuery.ui不会被声明两次.JavaScript确实会短路,因此||如果左侧评估为truthey ,它将不会评估右侧(感谢JP!).
Bonus语法解密,传递给匿名函数的$是对jQuery的引用.在点击之前我不得不一直向下滚动页面:-)
所以,这是上面一行的细分版本
; // extra semi colon to ensure correct concatenation and minifying
jQuery.ui // check if the variable called jQuery.ui is truthey
|| // OR if jQuery.ui isn't defined
(function($) {...})(jQuery); // define and execute an anonymous function
// passing in the conflict safe jQuery
// as the parameter called $
Run Code Online (Sandbox Code Playgroud)