2017-05-04 86 views
0

我有一個困惑,當我學習jQuery的源代碼: 請參見第三排如下:爲什麼context和rootjQuery可以執行'||'操作?並返回結果是不是布爾類型?

 // HANDLE: $(expr, $(...)) 
     } else if (!context || context.jquery) { 
      return (context || rootjQuery).find(selector); 

我覺得「rootjQuery」是「$(文件)」,「背景」是一個jQuery對象。

爲什麼context和rootjQuery可以執行'||'操作? 並返回結果不是布爾類型?

謝謝!

回答

1

基本上,如果真值爲真,則算子解析爲左值,如果左值爲真,則算子爲右值。它從來沒有真正映射到真或假,除非它的一個操作數是真或假。所以(a || b).name是b.name,如果a爲null,undefined,false或其他。

這是一種比較常見的做法。像const opts = options || defaultOptions中的選項對象可能未定義的函數中。

相關問題