检查未定义的值不起作用?

时间:2011-06-09 15:51:20

标签: javascript null undefined

我有以下javascript代码:

var currentIds = localStorage.getItem('currentPairsIds');

if ((typeof currentIds === "undefined") ||
    (currentIds == null))
        $.myNameSpace.currentIDs = new Array(3);
    else
        $.myNameSpace.currentIDs = currentIds.Split(',');

我正在使用Firebug进行调试,虽然currentIds没有任何值,但它始终执行else语句。

更新:

我从HTML5存储中获取此值。

我做错了什么?

7 个答案:

答案 0 :(得分:7)

这就是我解决问题的方法:

var currentIds = localStorage.getItem('currentPairsIds');

if ((currentIds === undefined) ||
    (currentIds == null) || (currentIds == "undefined"))
        $.myNameSpace.currentIDs = new Array(3);
    else
        $.myNameSpace.currentIDs = currentIds.split(',');

localStorage.getItem('currentPairsIds');返回字符串"undefined"

Split()功能中存在另一个错误。正确的版本没有任何大写字母。

答案 1 :(得分:2)

我会使用直接比较而不是众所周知的奇怪的“typeof”运算符:

if ((currentIds === undefined) || (currentIds === null)) {
  //...

答案 2 :(得分:1)

它不起作用,因为localStorage.getItem如果未定义项目则返回null,它不会返回undefined http://dev.w3.org/html5/webstorage/#dom-storage-getitem

示例:http://jsfiddle.net/mendesjuan/Rsu8N/1/

var notStored = localStorage.getItem('ffff');

alert(notStored); // null
alert(typeof notStored); // object, yes, null is an object.

因此你应该进行测试

alert(notStored === null);

答案 3 :(得分:0)


[修改编辑编辑编辑:P]


currentIds = "undefined"

意味着

typeof currentIds == "String"

另请参阅,Detecting Undefined,===不是字符串比较所必需的。

答案 4 :(得分:0)

我认为您必须检查undefined==而不是===进行比较。 例如:

typeof currentIds == "undefined"

这将确保变量确实是未定义的。

答案 5 :(得分:0)

在我的情况下,LocalStorage.getItem()将其转换为字符串形式的“未定义”。 我还需要检查它是否为字符串的“未定义”。

var myItem = LocalStorage.getItem('myItem');
if(myItem != "undefined" && myItem != undefined && myItem != null){
    ...
}

答案 6 :(得分:0)

if( typeof(varName) != "undefined" && varName !== null )

请确保在使用typeof()

进行检查时使用(“”)引号