此代码显示"显示未定义。"
import {a} from './dis.js';
show = () =>{
console.log(a);
}
show();
但这有效
import {a} from './dis.js';
const show = () =>{
console.log(a);
}
show();
为什么会这样?
答案 0 :(得分:3)
这与箭头功能无关。这是严格的代码的本质。我在strict
模式下工作时可以看到一个示例。那么ES6
模块呢,它们会自动进入strict
模式。
'use strict';
show = 4;
您正尝试将箭头函数的引用分配给未定义的变量show
。定义表示您已使用关键字var
,let
或const
为变量定义了它。
在第一个代码部分中,您没有使用这些关键字声明它,它会尝试查找变量并且找不到使用该名称定义的任何内容。所以它会引发错误。
在第二个代码部分中,您定义了一个名为show的变量,然后为其指定了对箭头函数的引用。所以一切都很好。
答案 1 :(得分:2)
这不是由箭头功能引起的。您正在尝试为show
分配值,但尚未在任何位置定义该变量。使用var
,let
或const
虽然在JS中没有定义作品而进行分配,但建议不要这样做,并且strict
模式不允许这样做。