如何检查localstorage变量是null还是未定义?

时间:2012-11-15 05:55:18

标签: javascript

我有这段代码:

var sideBar = localStorage.getItem('Sidebar');

我想检查是否定义了sideBar而不是if语句中的null。我有点困惑,我知道有一个:sideBar == undefinedsideBar != null

但是我有一个很好的方法可以在if:

中对这两个测试进行测试
if (??) 

6 个答案:

答案 0 :(得分:16)

检查变量是否已定义且不为null的最佳实践:

if (typeof sideBar !== 'undefined' && sideBar !== null)

已编辑意识到您未检查某些内容是否未定义,您是否正在检查是否已定义,因此请再次进行修改以更准确地回答您的请求

答案 1 :(得分:7)

  1. localStorage使用字符串保存数据,即在nullundefined等进行推理时,您始终必须考虑JavaScript字符串逻辑。
  2. 如果设置“sideBar”,请确保不使用“falsy”值。对于只有空字符串""的字符串。 如果你在if之前做其他事情(例如某些数学) - 检查变量,你需要考虑其他情况。
  3. 以下是一些测试,显示了JavaScript如何处理if语句中的某些值:

    > ("")? true : false
    false                 # empty string         -> if fails
    > (0)? true : false
    false                 # Number 0             -> if fails
    > ("0")? true : false
    true                  # String "0"           -> if succeeds
    > (null)? true : false
    false                 # JavaScript null      -> if fails
    > ("someText")? true : false
    true                  # any other String     -> if succeeds
    > (" ")? true : false
    true                  # a space character    -> if succeeds
    

    我不会对nullundefined使用尴尬的双重检查。 如果您直接检查localStorage.getItem的结果,则结果为nullString。如果您还将空字符串""视为“falsy”, 一个简单的if语句很好:

    var sideBar = localStorage.getItem('Sidebar');
    
    if(sideBar) {
       // do something with the sideBar
    }
    else {
       // do something without the sideBar
    }
    

    要对localBarrage中未设置的sideBar进行实际检查,您需要添加对空String的检查并将其视为“已定义”:

    if(sideBar || sideBar === "") {
        // sideBar defined, maybe even as empty String
    }
    else {
        // sideBar not set in localStorage
    }
    

答案 2 :(得分:6)

正如W3 Manual明确解释: getItem(key)方法必须返回与给定键关联的当前值。 如果与对象关联的列表中不存在给定键,则此方法必须返回null。

这意味着,不需要检查undefined,如果未定义则getItem()方法的结果将为null。你需要检查null。

if (localStorage.getItem("Sidebar") !== null) {
//...
}

答案 3 :(得分:0)

是的,你用&&

将两者联合起来(意思是两者都必须是)

因此,当且仅当每个条件的计算结果为真时,if (sideBar === undefined && sideBar !== null)才会计算为真。

答案 4 :(得分:0)

如果可以使用&&

加入陈述

建议使用'==='。例如if(sideBar === undefined&& sideBar!== null)

http://www.w3schools.com/jsref/jsref_undefined.asp

答案 5 :(得分:0)

这应该有用,并且除了“if”之外没有办法,即使它是三元运算符,

if( !value ) {
}

这将检查值是否为“truethy”并且应该涵盖“null”和“undefined”。