首先是要理解運算符 ||是這樣運算的:從第一個開始,遇到有意義的返回,不然返回最後一個表達式(注意不必定是Boolean值); &&是這樣運算的:從第一個開始,遇到無心義的返回,不然返回最後一個表達式(注意同上); !是這樣運算的:對錶達式的值取非(注意不是對錶達式)。 而後再試着 看看下面的代碼: var ob1 = new Boolean(false); var ob2 = (ob1&&true); var ob3 = (true&&ob1); var ob4 = Boolean(ob1&&true); var ob5 = Boolean(true&&ob1); alert("ob2 = " + ob2 + " ob3 = " + ob3 + " ob4 = " + ob4 + " ob5 = " + ob5); 最後測試出來的結果是 ob2 = true ob3 = false ob4 = true ob5 = true
new Boolean(),new Boolean(false)是同一個東西,因爲它是一個對象,故是有意義的,但其值爲false,因此,能夠看爲「有意義的false」,因此結果爲最後一個表達式的值。測試
原始的Boolean值和Boolean對象區別如此之大,因此切記兩者區別,不要混淆使用。編碼
一個Boolean對象,Boolean對象是對Boolean值的一個封裝。
Boolean對象:一個值爲true或false的Boolean對象。spa
這個問題是最近在體驗一個牛客APP 作JavaScript 題目時候 遇到的 ,而後查詢了一下資料,再通常編碼的過程當中咱們仍是不會這樣去寫的,這樣寫沒有多大的意義,直接使用Boolean的原始值就能夠了,這樣寫再理解上也困難一些,意義也不大。不過偶爾裝X 仍是能夠的!
code