js变量未定义,但if语句从不为真

时间:2014-01-09 10:32:36

标签: javascript local-storage

是否有不同的检查未定义的方法?因为我的变量localRetrieved的console.log显示我未定义,但我的IF语句不正确...

Screen.prototype.getModulesPrototype = function() {
    var self = this;

    console.log('Retrieve modules content from local storage (if present)');
    var locallyRetrieved = localStorage.getItem('modulesPrototype');
    console.log('locallyRetrieved: '+locallyRetrieved);

    if( typeof(locallyRetrieved) =='undefined' || locallyRetrieved == null ) {

        console.log('nothing found in localStorage so go online to fetch it');
        var remotelyRetrieved = self.getModuleAjax();
        localStorage.setItem('modulesPrototype', remotelyRetrieved);            
        locallyRetrieved = localStorage.getItem('modulesPrototype');

    }

4 个答案:

答案 0 :(得分:0)

啊,我想我找到了它。

localStorage.getItem()实际上返回一个STRING,表示“未定义”,因此可以正常工作

if ( locallyRetrieved == 'undefined' )

...好奇

答案 1 :(得分:0)

http://underscorejs.org/#isUndefined请参阅此链接以检查未定义的contion

答案 2 :(得分:0)

使用localStorage.getItem()时,您只需检查响应是否为真。所以你应该能够检查:

if( locallyRetrieved ) {
    // do stuff
}

看到这个小提琴:http://jsfiddle.net/3kC3Z/2/

规范指定如果找不到任何内容,getItem应该返回null:

  

“如果给定的密钥不存在于与之关联的列表中   对象然后这个方法必须返回null。“

http://dev.w3.org/html5/webstorage/#dom-storage-getitem

答案 3 :(得分:0)

试试这个

 if(locallyRetrieved ==undefined || locallyRetrieved == null ) {
    ...
 }