我有以下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存储中获取此值。
我做错了什么?
答案 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()