收藏
回答

第三方平台,同一段代码,在开发版、体验版居然出现了两种不同执行结果,震惊!可怕!

框架类型 问题类型 操作系统 操作系统版本 手机型号 微信版本
小程序 Bug MIUI 9.5 小米MIX2S 6.6.7


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。呵呵呵呵呵呵呵呵呵

最后一次编辑于  2018-06-05
回答关注问题邀请回答
收藏

10 个回答

  • nali
    nali
    2018-06-06

    大哥,你不知道数组还有个length属性吗?for in 一个数组会多一次啊

    2018-06-06
    有用 3
    回复 1
    • 张博 Bill
      张博 Bill
      2018-06-25

      你说的没毛病,但是体验版的执行情况跟你说的一致。开发版没出现你说的“多的那一次”

      2018-06-25
      回复
  • c
    c
    2018-06-05

    for in 会对数组进行一次操作 底层搞清楚吧

    2018-06-05
    有用 1
    回复 5
    • 张博 Bill
      张博 Bill
      2018-06-05

      那为什么开发版和体验版执行结果不一样

      2018-06-05
      回复
    • c
      c
      2018-06-05回复张博 Bill

      写法有问题 for in 不能reminders[i] 这样写了 同样的代码 多执行几次 就会不一样 用正常的for循环就好了

      2018-06-05
      回复
    • Galaxy Ranger
      Galaxy Ranger
      2018-06-06回复c
      为什么会不一样?for in一个数组,i 是数组标号,和正常for循环不是一样的吗。
      2018-06-06
      回复
    • deRek
      deRek
      2018-06-07回复Galaxy Ranger

      prototype了解一下。

      猜测是体验版那被扩展了prototype导致输出多了。

      就算你用for..in + hasOwnProperty, 如果代码中有[].xx = xx, xx照样还是能遍历出来。


      安全的遍历数组方法是用自带函数或者for of.

      2018-06-07
      回复
    • Galaxy Ranger
      Galaxy Ranger
      2018-06-07回复deRek

      你说的对,有这个可能。没想到。

      2018-06-07
      回复
  • ៚你的微笑•ᴗ•
    ៚你的微笑•ᴗ•
    2018-06-05

    我也曾遇到。 太可怕了。。。。。。

    2018-06-05
    有用 1
    回复
  • 冰糖雪梨
    冰糖雪梨
    2018-06-07

    运行环境不一样,一切以真机为准呗

    2018-06-07
    有用
    回复 1
    • 张博 Bill
      张博 Bill
      2018-06-07

      开发版、体验版都是真机

      2018-06-07
      回复
  • 期待GPT
    期待GPT
    2018-06-07

    习惯就好

    2018-06-07
    有用
    回复
  • 张博 Bill
    张博 Bill
    2018-06-07

    所有质疑我的人,你们都没注意到重点,开发版与体验版执行结果不一样,我并未说体验版的执行结果不对,我也没说开发版的执行结果就是对的。


    问题在于为什么开发版与体验版执行结果不一样!

    问题在于为什么开发版与体验版执行结果不一样!

    问题在于为什么开发版与体验版执行结果不一样!

    2018-06-07
    有用
    回复
  • 小小篮子
    小小篮子
    2018-06-07

    map遍历数组了解一下

    2018-06-07
    有用
    回复
  • Guo😄
    Guo😄
    2018-06-07

    以上都是大神!

    2018-06-07
    有用
    回复
  • 令狐不冲
    令狐不冲
    2018-06-06

    遍历数组不要用for in,for in的结果会受到外部因素的影响

    2018-06-06
    有用
    回复 1
    • 张博 Bill
      张博 Bill
      2018-06-07

      我们已经整体查用for in循环的代码了,都改成forEach了

      2018-06-07
      回复
  • 疯狂的小辣椒
    疯狂的小辣椒
    2018-06-05

    你好,可否提供能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)?

    2018-06-05
    有用
    回复 1
    • 张博 Bill
      张博 Bill
      2018-06-05

      我代码都粘贴出来了,而且我说了三方平台的体验版才有问题。我提供代码片段后,你能运行三方平台的体验版吗?


      回复开发者提的问题前可不可以动动脑子,马化腾请你们来解决问题的,不是来搞笑的

      2018-06-05
      3
      回复
登录 后发表内容