为什么在这个函数中未定义env?

时间:2017-11-09 05:33:57

标签: javascript webpack ecmascript-6

这是一个包含一些环境配置的javascript文件(名为env.js):

module.exports = {
  "environment": {},
  "mixpanel": {},
  "google": {
    "app-id": "abc"
  },
}

我尝试在es6中编写的另一个javascript中以这种方式导入和使用它:

import env from '../env';

console.log(env)

在开发控制台中,我可以看到值已按预期打印:

enter image description here

现在我想在函数中解压缩对象:

const buildArray = () => {

  const entries = [];

  for (let key of env) {
    for (let subkey of env[key]) {
      console.log (env[key][subkey])
    }
  }

  return entries;
};

然后我收到了这个错误:

Uncaught TypeError: __WEBPACK_IMPORTED_MODULE_2__env___default.a[Symbol.iterator] is not a function

当我来到for (let key of env)

行时

如果我在此之前暂停在开发者控制台并尝试检查那里的env,我就会收到此错误

Uncaught ReferenceError: env is not defined

但如果我将env作为参数引入函数,则错误就会消失,即

const buildArray = (env) => {

enter image description here

为什么会这样?全局范围内不应该env可见吗?

1 个答案:

答案 0 :(得分:0)

Key of Object不起作用。它应该是Key in Object

{p} of关键字用于arrays

let a = [1,2,3,4]
for (let item of a) { console.log(item)} // 1 2 3 4 

in关键字适用于objects(包括数组)

let a = [1,2,3,4]
for (let item in a) { console.log(item)} // 0 1 2 3 (the indexes)

let obj = {a:1, b:2}
for (let key in obj) {console.log (key)} // a b