JavaScript 語言設(shè)計(jì)的不嚴(yán)謹(jǐn),有時(shí)候很容易把人給搞暈,比如說這個(gè)變量有效性判斷。
先舉幾個(gè)例子:
想要理解為什么得出上面的結(jié)果,首先得明白 undefined 和 null 在 JavaScript 中所表示的不同含義。
這里借用下阮一峰老師博客中的一個(gè)結(jié)論:
null和undefined基本是同義的,只有一些細(xì)微的差別。
null表示"沒有對(duì)象",即該處不應(yīng)該有值。典型用法是:
(1) 作為函數(shù)的參數(shù),表示該函數(shù)的參數(shù)不是對(duì)象。
(2) 作為對(duì)象原型鏈的終點(diǎn)。
undefined表示"缺少值",就是此處應(yīng)該有一個(gè)值,但是還沒有定義。典型用法是:
(1)變量被聲明了,但沒有賦值時(shí),就等于undefined。
(2) 調(diào)用函數(shù)時(shí),應(yīng)該提供的參數(shù)沒有提供,該參數(shù)等于undefined。
(3)對(duì)象沒有賦值的屬性,該屬性的值為undefined。
(4)函數(shù)沒有返回值時(shí),默認(rèn)返回undefined。
在 Java 中,if 條件中必須使用 boolean 表達(dá)式, 所以使用 JavaScript 時(shí),也會(huì)習(xí)慣性的認(rèn)為如此。實(shí)際上,JavaScript 中 null,undefined,0,"",false 作為 if 的條件的時(shí)候,都被認(rèn)為是 false 。
所以,在判斷變量時(shí),可以用以下幾種方式:
-
精確判斷一個(gè)變量是否為 undefined
-
精確判斷一個(gè)變量是否為 null
-
判斷一個(gè)變量是否為 null 或 undefined
-
判斷值是否有效, 可以直接在if表達(dá)式中使用變量名稱, 我常用來判斷一個(gè)輸入框值是否有效(注意: 如果變量值為0, 會(huì)被當(dāng)作無效)
搜索微信號(hào)threetimes1992
,關(guān)注我。
內(nèi)容大多會(huì)是后端技術(shù)、前端工程、DevOps,偶爾會(huì)有一些大數(shù)據(jù)相關(guān),會(huì)推薦一些好玩的東西。希望你會(huì)喜歡~