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ì)喜歡~