Javascript 为什么这会在Chrome中造成无休止的循环?
这可能是一个愚蠢的问题,但为什么在Chrome中,而不是在Firefox中,下面的for循环会进入一个无休止的循环?(显然,循环测试失败了——我只是不知道为什么) 它正在检查存在多少本地存储元素。例如: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中永远循环?这是因为你将它与未定义的字符串表示形式相比较,而不是与未定义的字符
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++;