原文地址:http://www.sitepoint.com/javascript-truthy-falsy/
原文作者:Craig Buckler
一、前言
首先,我是一個小白,一個相信有一天我也能成爲高手的小白。好了,這就夠了,那麼,開始吧。
以前在用javascript的時候偶爾也聽過 ''(空串),0會返回false之類的,也確實用過來判斷,最近看到一篇文章,有一個系統的介紹。才明白了,原來專業一點這叫做truthy和falsy原則呀,看見單詞挺簡單的,網上的大神們都不屑翻譯,那麼,就讓我這個小白來練練手吧~
首先要說的是這個truthy以及falsy該如何翻譯,google了下沒有這單詞。其實想了想也不必翻譯,按照中文的感性理解,不就是“對的”,“能返回否的東西”嘛!
------------------------------------------------以下是譯文全文-----------------------------------
像很多語言一樣,javascript也支持boolean數據類型(有true和false兩個值),不過特別的是,javascript中的任何對象都還隱含一個boolean值,這便是大家所說的truthy和falsy原則。我們可以很方便的使用這個隱含的屬性,特別是在變量比較上(//if條件句)。掌握好這些特別的規則有助於調試我們的前端代碼。
truthy和falsy值
以下的值都隱含有false屬性:
- false
- 0 (零)
- "" (空串)
- null
- undefined
- NaN (Not-a-Number,注意,這是個number類型!用來表示變量不是number的number類型,有些拗口)
var a = !!(0); // a的值爲false
var b = !!("0"); // b的值爲true
var c = (false == 0); // true
var d = (false == ""); // true
var e = (0 == ""); // true
var f = (null == false); // false
var g = (null == null); // true
var h = (undefined == undefined); // true
var i = (undefined == null); // true
3.最後一個比較特別的,NaN,不與其他任何的相等,甚至與自己都不等(//六親不認,失去自我)var j = (NaN == null); // falsevar k = (NaN == NaN); // false
再補充一個小知識:javascript使用typeof(NaN),返回值是number,也就是說這個NaN還是個number類型。還好js提供了一個函數inNaN()用來判斷一個變量是否是數字。
如果你使用的時候有疑惑。。。
用強等於吧,如下:
var l = (false == 0); // true
var m = (false === 0); // false
另外一個比較特別的地方
空數組,例如var a = [];是返回true的,但也得看你怎麼用,區別如下:
if ( [] ) {
// 這裏的代碼將會執行
}
if ( [] == true ) {
// 這裏的代碼不會執行
}
if ( [] == false ) {
// 這裏的代碼將會執行
}
------------------------------------------譯文結束----------------------------
回頭看一眼,這點小屁文章,根本就不用翻譯,好吧。。。請噴吧。。。反正我還是小白