仅当值既不为null也未定义时调用函数
单击一个按钮时,我会检查localstorage键中是否存在某些内容:
var a = localStorage.getItem('foo'); if (typeof a != 'undefined') { // Function }
但如果密钥根本不存在,则返回null。 如果没有未定义,我怎么调用而不是null函数 ,否则返回true(?)或继续?
JavaScript有一个虚假值的概念…即0, null
, undefined
和一个空字符串。
因此,你应该能够通过这样做来检查a
是否“真实”(即不是我上面提到的值之一):
var a = localStorage.getItem('foo'); if (a) { // Function }
SitePoint的更多信息可在此处获得
如果false
, 0
, NaN
或空字符串是localStorage中的有效值,则不应使用JavaScript的伪比较。
相反,您应检查该项是否等于null
或等于undefined
:
var a = localStorage.getItem('foo'); if (a === null || a === undefined) { // Function }
请注意,三等于( ===
)运算符完全比较,没有类型强制 。 使用双等于( ==
)运算符,应用一组特殊规则来转换相似但不同类型的值。 其中最有用的一个是null == undefined
,允许简化上面的代码:
var a = localStorage.getItem('foo'); if (a != null) { // Function }
如果a为null
或undefined
则内部代码将不会运行。