2012-03-28 33 views
2

当点击一个按钮,我检查,如果在关键的localStorage存在这样的东西:调用函数只有在一个值既不是空也不是未定义

var a = localStorage.getItem('foo'); 
if (typeof a != 'undefined') { 
    // Function 
} 

但如果键完全不存在,它返回null。我怎样才能拨打如果不是undefined而不是null功能,否则返回true(?)还是继续?

回答

2

JavaScript的概念是falsy值...即0,null,undefined和一个空字符串。

正因为如此,你应该能够只检查是否a是“truthy”(即我上面提到的值不是一个),这样做:

var a = localStorage.getItem('foo'); 
if (a) { 
    // Function 
} 

更多信息from SitePoint available here

+0

谢谢。刚刚学到了一些我应该知道的新东西。 – jQuerybeast 2012-03-28 11:01:57

0

如果您的localStorage中存在false0,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 
} 

如果是nullundefined里面的代码将不会运行。

相关问题