Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么这会在Chrome中造成无休止的循环?_Javascript_Html_For Loop_Local Storage - Fatal编程技术网

Javascript 为什么这会在Chrome中造成无休止的循环?

Javascript 为什么这会在Chrome中造成无休止的循环?,javascript,html,for-loop,local-storage,Javascript,Html,For Loop,Local Storage,这可能是一个愚蠢的问题,但为什么在Chrome中,而不是在Firefox中,下面的for循环会进入一个无休止的循环?(显然,循环测试失败了——我只是不知道为什么) 它正在检查存在多少本地存储元素。例如: localStorage['myPrefix_0'] localStorage['myPrefix_1'] localStorage['myPrefix_2'] ... 将返回3 你有没有想过为什么它会在Chrome中永远循环?这是因为你将它与未定义的字符串表示形式相比较,而不是与未定义的字符

这可能是一个愚蠢的问题,但为什么在Chrome中,而不是在Firefox中,下面的for循环会进入一个无休止的循环?(显然,循环测试失败了——我只是不知道为什么)

它正在检查存在多少本地存储元素。例如:

localStorage['myPrefix_0']
localStorage['myPrefix_1']
localStorage['myPrefix_2'] ...
将返回3


你有没有想过为什么它会在Chrome中永远循环?

这是因为你将它与未定义的字符串表示形式相比较,而不是与未定义的字符串表示形式相比较:

localStorage['asdf']
>>undefined
localStorage['asdf'] == undefined
>>true
localStorage['asdf'] == 'undefined'
>>false
所以你有两个选择,你可以

1)
localStorage['asdf']的类型!=“未定义”


2)
localStorage['asdf']!=undefined

这是因为您将其与undefined的字符串表示进行比较,而不是将其本身进行比较:

localStorage['asdf']
>>undefined
localStorage['asdf'] == undefined
>>true
localStorage['asdf'] == 'undefined'
>>false
所以你有两个选择,你可以

1)
localStorage['asdf']的类型!=“未定义”


2)
localStorage['asdf']!=未定义的

localStorage[this.config.localStoragePrefix+i]!='undefined'
在与“undefined”字符串进行比较时,始终返回true。更改为
未定义
原语,或使用
类型进行测试

localStorage[this.config.localStoragePrefix+i]!='undefined'
在与“undefined”字符串进行比较时,始终返回true。更改为
undefined
原语或使用
typeof

测试是因为“undefined”与“undefined”不同:p

是因为“undefined”与“undefined”不同:p

任何原因您不能只使用
localStorage.length
?删除“undefined”周围的引号时会发生什么<代码>“未定义”!=未定义的。有什么原因不能只使用
localStorage.length
?删除“未定义”周围的引号时会发生什么情况<代码>“未定义”!=未定义的。解释一下这里发生了什么?有点。这取决于localStorage是什么类型的对象。有可能我的代码会计算函数和其他东西。。。您可能需要限定测试人员解释这里发生了什么。这取决于localStorage是什么类型的对象。有可能我的代码会计算函数和其他东西。。。你可能需要通过考试
for(var o in localStorage) if (localStorage[o]) this.config.appCount++;