陷入两种不受限制的语法违规行为

时间:2017-11-09 23:58:41

标签: ecmascript-6 eslint eslint-config-airbnb

这是我的原始代码:

const buildTableContent = (settings) => {
  const entries = [];
  for (const key in settings) {
    for (const subkey in env[key]) {

settings基本上是字典词典

  {  
    'env': {'name': 'prod'}, 
    'sass: {'app-id': 'a123445', 'app-key': 'xxyyzz'}
  }

它触发了以下AirBnb样式指南错误:

  

35:3错误for..in循环迭代整个原型链,   这几乎不是你想要的。使用   对象。{keys,values,entries},并迭代生成的数组   没有限制的语法

所以我将代码更改为

const buildTableContent = (settings) => {
  const entries = [];
  for (const key of Object.keys(settings)) {
    for (const subkey of Object.keys(env[key])) {
建议

现在,当我运行lint时,我得到了这个:

  

35:3错误迭代器/生成器需要再生器 - 运行时,这对于本指南来说太重了,不允许这样做。分别,   应避免循环,以支持数组迭代   没有限制的语法

因此,我认为他们违反了一些皮特风格。

如何解决此问题?

1 个答案:

答案 0 :(得分:9)

你想用

Object.keys(settings).forEach(key => {
  Object.keys(env[key]).forEach(subkey => {

或可能Object.entriesObject.values,具体取决于您是否真的需要密钥。