2011-06-09 84 views
1

我有以下的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

那么这必须意味着'currentIds'的值并不真正'undefined'。 – Pointy 2011-06-09 15:56:33

+0

@Pointy:没有定义。语句'$ .myNameSpace.currentIDs = currentIds.Split(',');'抛出一个异常。 – VansFannel 2011-06-09 15:59:02

+0

是'currentIds''“”未定义“还是未定义? 'typeof“undefined”'是字符串。 – 2011-06-09 15:59:18

回答

6

这是我已经解决了我的问题:

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()函数还有另一个错误。正确的版本没有任何大写字母。

+2

这是错误的,'localStorage.getItem()'不返回字符串“undefined”,它返回'null',你只需要'null'检查,而不是你盲目测试的其他东西。 – 2012-02-27 17:04:07

+2

@JuanMendes,我有一个未定义的,这个语法适用于我的问题。事实上,这是奇怪的'==“未定义的”'引起了我的问题! – 2014-01-28 21:50:00

+6

@DaveA这是因为您保存了未定义的内容,本地存储器将其转换为“未定义”字符串。将某些内容保存到localStorage时,应该注意不要将其设置为undefined或null。我总是将它设置为空字符串,而不是 – 2014-01-29 00:49:30

0

[编辑编辑编辑编辑:P]


currentIds = "undefined" 

意味着

typeof currentIds == "String" 

另请参见,Detecting Undefined,===是没有必要的字符串比较。

+0

正确的代码是... – VansFannel 2011-06-09 15:59:35

+0

你的代码是正确的,你所描述的currentIDs的值似乎并不符合你期望的值,这个问题在别的地方。 – Andrew 2011-06-09 16:01:18

+0

我已经更新了我的问题这一行'var currentIds = localStorage.getItem('currentPairsIds');'这是我获取'currentIds'的值。 – VansFannel 2011-06-09 16:19:17

0

我认为你必须检查undefined==而不是===。 例如:

typeof currentIds == "undefined" 

这将确保该变量确实未定义或不确定。

+2

'=='或'==='在这种情况下没有区别。 – MooGoo 2011-06-09 16:32:01

+0

这不会改变,typeof返回一个字符串。 – Andrew 2011-06-09 16:33:02

2

我会用一个直接的比较,而不是出了名的古怪“typeof运算”操作:

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

yes:no-typeof,与没有引号的'undefined'比较! – 2013-01-23 08:36:31