当点击一个按钮,我检查,如果在关键的localStorage存在这样的东西:调用函数只有在一个值既不是空也不是未定义
var a = localStorage.getItem('foo');
if (typeof a != 'undefined') {
// Function
}
但如果键完全不存在,它返回null。我怎样才能拨打如果不是undefined而不是null功能,否则返回true(?)还是继续?
当点击一个按钮,我检查,如果在关键的localStorage存在这样的东西:调用函数只有在一个值既不是空也不是未定义
var a = localStorage.getItem('foo');
if (typeof a != 'undefined') {
// Function
}
但如果键完全不存在,它返回null。我怎样才能拨打如果不是undefined而不是null功能,否则返回true(?)还是继续?
JavaScript的概念是falsy值...即0,null
,undefined
和一个空字符串。
正因为如此,你应该能够只检查是否a
是“truthy”(即我上面提到的值不是一个),这样做:
var a = localStorage.getItem('foo');
if (a) {
// Function
}
如果您的localStorage中存在false
,0
,NaN
或空字符串为有效值,则不应使用JavaScript的falsy比较。
相反,你应该检查的项目等于null
或等于undefined
:
var a = localStorage.getItem('foo');
if (a === null || a === undefined) {
// Function
}
注意三倍的equals(===
)运算符比较准确,没有type coercion。使用double等于(==
)运算符会应用一组特殊的规则来隐藏相似的值但不同类型的值。其中最有用的这些的是null == undefined
,允许简化上面的代码:
var a = localStorage.getItem('foo');
if (a != null) {
// Function
}
如果是null
或undefined
里面的代码将不会运行。
谢谢。刚刚学到了一些我应该知道的新东西。 – jQuerybeast 2012-03-28 11:01:57