我笨,不理解逻辑(请忽略)

时间:2017-11-29 16:17:02

标签: javascript json if-statement

:)

我正在迭代一个对象。出于调试目的,我正在尝试记录某个键被击中。出于某种原因,下面的if语句永远不会评估为真。

for (let key in tiles) {
    console.log(key)
    if (tiles[key].autoload) {
        app.loadWidget(key);
        if (key === 'social') {
            console.warn("Loading social widget");  //this never gets logged
        }
    }
}

以下是第一个console.log的完整输出:

10:10:44.111 app.js:357 nearby
10:10:44.112 app.js:357 social   //<--- WTF
10:10:44.113 app.js:357 clock
10:10:44.114 app.js:357 calendar
10:10:44.117 app.js:357 weather
10:10:44.119 app.js:357 addwidget
10:10:44.120 app.js:357 settings
10:10:44.121 app.js:357 account
10:10:44.122 app.js:357 debug

我尝试强制它以确保使用if ('' + key === 'social')不是类型问题。我也试过了==。它没有帮助。

这是对象定义:

let tiles = {
    'store': {
        name: 'store',
        autoload: true,
        loadOrder: 1,
        /* other attributes */
        isLoaded: false,
    },
    'social': {
        name: 'social',
        autoload: false,
        loadOrder: 1,
        /* other attributes */
        isLoaded: false,
    },
    /* etc, etc */
 }

我确信这很简单,我忽略了。 为什么key永远不会等于'social'

let tiles = {
  'store': {
    name: 'store',
    autoload: true,
    loadOrder: 1,
    /* other attributes */
    isLoaded: false,
  },
  'social': {
    name: 'social',
    autoload: false,
    loadOrder: 1,
    /* other attributes */
    isLoaded: false,
  },
    /* etc, etc */
 }


for (let key in tiles) {
  console.log(key)
  if (tiles[key].autoload) {
    //app.loadWidget(key);
    if ('' + key === 'social') {
      console.warn("Loading social widget");
    }
  }
}

0 个答案:

没有答案