javascript - jquery對象之間做 || 運算 ,返回的為什么不是boolean類型
問題描述
jquery源碼片段如下:
// HANDLE: $(expr, $(...))} else if ( !context || context.jquery ) { return ( context || rootjQuery ).find( selector );
我認為context這里是一個jquery對象, rootjquery是$(document)
但他們返回的記過不應該是布爾值嗎, 這里為什么是一個jquery對象.
所以||運算在這里做了什么? 他的作用是什么???
謝謝
問題解答
回答1:基礎請看這里, 一目了然.https://developer.mozilla.org...
多說一句, 在 ES2015 以前, JS 的函數是沒有默認參數的. 為了像其他語言一樣能用默認參數, 經常會這么寫
function demo(arg){ arg = arg || true;}
還有為了兼容不同瀏覽器 API 的時候, 也經常這么寫.
if( !window.requestAnimationFrame ){ window.requestAnimationFrame = (window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.msRequestAnimationFrame || function (callback){ return setTimeout(callback, 1000 / 60); });}回答2:
Javascript邏輯運算符可以在非Boolean的環境中使用.
盡管 && 和 || 運算符能夠在非Boolean環境中使用, 但如果他們的返回值能夠轉換成Boolean值的話,也可以認為是Boolean運算
(來自邏輯運算符)
對于非Boolean的環境中:
當有一個false時,返回false一側的值當有兩個false時,返回運算符之前(左側)的值;當有兩個true時,返回運算符之后(右側)的值。
(來源于JavaScript中的邏輯運算的返回值(邏輯與&&,邏輯或||,邏輯非!))
