在javascript中,我們經常會遇到非假值的情況,那么什么是非假值呢?
非假值是指在javascript中判斷為真的值,這些值不一定是true或者1,而是一些看似不那么顯然的數據類型,比如:
if ("0") { ... } // 真 if ([]) { ... } // 真 if ({}) { ... } // 真 if ("false") { ... } // 真
字符串 "0" 被理解為 true,因為它是一個非空字符串,為空的字符串將被理解為假值。數組 [] 被理解為 true,因為它不是 null 或 undefined。同樣,對象 {} 被處理為 true。另外,字符串 "false" 其實代表了一個真實的字符串,雖然它的值看起來是一個布爾值。
下面是一些其他情況:
if (NaN) { ... } // 假 if (null) { ... } // 假 if (undefined) { ... } // 假 if (0) { ... } // 假 if (false) { ... } // 假 if ("") { ... } // 假
需要注意的是,布爾值true和非假值在大多數情況下是一樣的,但并不是完全相同。例如:
if (true == "1") { ... } // 真 if (true === "1") { ... } // 假
在這個例子中,我們可以看到"1"被轉換為數字1,然后被理解成true。但是,使用全等(===)運算符進行比較則會返回 false,因為這些值的數據類型不同。
最后要提醒的是,在使用非假值時,一定要小心陷阱!比如:
if ("0" == false) { ... } // 真 if ("0" === false) { ... } // 假
在這個例子中,使用雙等號(==)進行比較時,"0"被轉換為數字0,然后被理解成false。使用全等(===)運算符,則返回false。因此,我們應該始終使用全等運算符,以避免這些陷阱。