導讀:跟其他大多數的計算機語言一樣,JavaScript也支持Boolean類型的數據,這些值可以被設置為true 或者false 。另外,JavaScript中的所有數據類型的值都有一個默認的布爾值,一般稱為真值(truthy)或者假值(falsy)。在處理真值和假值時會有一點奇怪,尤其是變量與變量之間進行比較的時候。理解更多相關的怪異規則會對我們開發調試複雜的客戶端應用程式很有幫助。
今天優優推薦的這篇譯文,就會對truthy和falsy進行詳細講解,希望對大家有幫助。
真值和假值下面這些值在JavaScript中都是falsy:
除上面幾個值以外,其他所有值都是truthy,包括字符串"0", "false", 空函數,空數組,空對象。
var a = !!(0); var b = !!("0");
假值的比較Falsy values遵循一些看起來怪怪的比較規則,這些規則可能會導致程序出現一些邏輯錯誤。
假值false,0,""三者是相等的,並且它們之間可以相互比較。
var c = (false == 0); var d = (false == ""); var e = (0 == "");
假值null,undefined,除了它們自身之外和任何值都不相等。
var f = (null == false); // falsevar g = (null == null); // truevar h = (undefined == undefined); // truevar i = (undefined == null); // true
最後,假值 NaN 和任何值都不相等,包括 NaN 本身!
var j = (NaN == null); var k = (NaN == NaN);
你應該知道typeof(NaN)返回"Number"。幸運的是,JavaScript有一個核心函數isNaN()來判斷一個值是否是NaN。
如果還是有疑惑那麼請在使用真值、假值容易導致邏輯錯誤的地方,使用嚴格相等(===)和嚴格不相等(!==)吧。這兩個操作符會同時比較對象的類型和值。
var l = (false == 0); // truevar m = (false === 0); // false
在你寫JavaScript代碼的時候,真值和假值讓你痛苦過嗎?
作者簡介:Craig Buckler是一名英國特約web顧問,他早在1995年就 搭建了一個在IE 2.0 上面展示的頁面。從那時候開始,他就開始倡導web標準,可訪問性,HTML5技術的最佳實踐。。
原文:https://www.sitepoint.com/javascript-truthy-falsy/
譯文:https://segmentfault.com/a/1190000007665056
作者:Craig Buckler
譯者:楊忠勳
推薦閱讀: