禁用远程调试器时 for...of 循环不起作用
Posted
技术标签:
【中文标题】禁用远程调试器时 for...of 循环不起作用【英文标题】:for...of loop not working when remote debugger is disabled 【发布时间】:2017-12-30 23:20:27 【问题描述】:当调试器被禁用时,我得到这个错误:
undefined is not a function (evaluating '_iterator[typeof Symbol === 'function' Symbol.iterator:'@@iterator']()')
但是当它启用时,我的代码可以正常工作。这只发生在安卓上。 ios 应用运行良好。
这是我的依赖项:
反应 反应原生 本地基础 base-64 领域下面是产生影响的代码:
for(toy of toys)
console.log(toy)
如果我取消注释上面的行,我的代码可以在没有调试器的情况下工作。
【问题讨论】:
根本不是该主题的专家,但是,是否有可能在禁用调试器的情况下console
未定义?
玩具的内容? Toys 是数组还是对象?普通对象不可迭代
对象数组。 @EnieJakiro
@JordiNebot 不是真的,因为它适用于 iOS。
你有没有更改任何 babel 配置?或者导入了与 babel 冲突的包
【参考方案1】:
这不是一个完整的答案,而是基于MDN documentation
您只能在可迭代对象上使用 for ... of ...
循环。即对象必须实现@@iterator
接口。
由于某种原因,在调试运行的 JS 解释器时似乎表现不同(可能是因为在调试 SDK 时使用了不同的解释器)。
编辑:React Native 中的 Symbol 和 @@iterator 似乎存在问题:https://github.com/facebook/react-native/pull/5294#issuecomment-190061913
这个问题最初出现在 android 和 iOS 8.x 中,但在 iOS 9 中得到了修复(这解释了为什么您的代码在那里工作)。安卓版好像还有点问题。
【讨论】:
数组是可迭代对象,他可以用for .. of ..
遍历一个对象数组
@EnieJakiro An object is iterable if obj[Symbol.iterator]
is a function,并且错误信息明确指出它是未定义的,这不是一个函数
嗨@Pablo,无论有没有调试器,这都适用于iOS。我什至可以访问 Toys[index],所以我的对象数组不是问题。
@Pablo,我检查了我的 babel.rc,里面没有异常。以上是关于禁用远程调试器时 for...of 循环不起作用的主要内容,如果未能解决你的问题,请参考以下文章