let reminders = [-1]; var i; for (i in reminders) { if (reminders[i] != -1) { if (reminders[i] == 0) { console.log( 'abc' ); } else { console.log( 'def' ); } } else { console.log( 'not invoke' ); } } |
第三方平台开发版执行结果:
这是正常的。
第三方平台体验版执行结果:
for循环居然走了2次,我打印了log,第二次for循环,变量i是null,reminders[i]也是null。呵呵呵呵呵呵呵呵呵
大哥,你不知道数组还有个length属性吗?for in 一个数组会多一次啊
你说的没毛病,但是体验版的执行情况跟你说的一致。开发版没出现你说的“多的那一次”
for in 会对数组进行一次操作 底层搞清楚吧
那为什么开发版和体验版执行结果不一样
写法有问题 for in 不能reminders[i] 这样写了 同样的代码 多执行几次 就会不一样 用正常的for循环就好了
prototype了解一下。
猜测是体验版那被扩展了prototype导致输出多了。
就算你用for..in + hasOwnProperty, 如果代码中有[].xx = xx, xx照样还是能遍历出来。
安全的遍历数组方法是用自带函数或者for of.
你说的对,有这个可能。没想到。
我也曾遇到。 太可怕了。。。。。。
运行环境不一样,一切以真机为准呗
开发版、体验版都是真机
习惯就好
所有质疑我的人,你们都没注意到重点,开发版与体验版执行结果不一样,我并未说体验版的执行结果不对,我也没说开发版的执行结果就是对的。
问题在于为什么开发版与体验版执行结果不一样!
问题在于为什么开发版与体验版执行结果不一样!
问题在于为什么开发版与体验版执行结果不一样!
map遍历数组了解一下
以上都是大神!
遍历数组不要用for in,for in的结果会受到外部因素的影响
我们已经整体查用for in循环的代码了,都改成forEach了
你好,可否提供能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)?
我代码都粘贴出来了,而且我说了三方平台的体验版才有问题。我提供代码片段后,你能运行三方平台的体验版吗?
回复开发者提的问题前可不可以动动脑子,马化腾请你们来解决问题的,不是来搞笑的