使用导入/导出时,为什么箭头功能不起作用

时间:2017-12-06 07:29:53

标签: javascript webpack

此代码显示"显示未定义。"

import {a} from './dis.js';
show = () =>{
  console.log(a);
}
show();

但这有效

import {a} from './dis.js';
const show = () =>{
    console.log(a);
}
show();

为什么会这样?

2 个答案:

答案 0 :(得分:3)

这与箭头功能无关。这是严格的代码的本质。我在strict模式下工作时可以看到一个示例。那么ES6模块呢,它们会自动进入strict模式。

'use strict';

show = 4;

您正尝试将箭头函数的引用分配给未定义的变量show。定义表示您已使用关键字varletconst为变量定义了它。

在第一个代码部分中,您没有使用这些关键字声明它,它会尝试查找变量并且找不到使用该名称定义的任何内容。所以它会引发错误。

在第二个代码部分中,您定义了一个名为show的变量,然后为其指定了对箭头函数的引用。所以一切都很好。

答案 1 :(得分:2)

这不是由箭头功能引起的。您正在尝试为show分配值,但尚未在任何位置定义该变量。使用varletconst

进行定义

虽然在JS中没有定义作品而进行分配,但建议不要这样做,并且strict模式不允许这样做。