为什么es6不允许这样做?我知道该消息仅在警报模块中定义,而在基本模块中未定义,但是我(显然是错误的)想像一下,由于警报类可以访问它,因此所有类都应该...有想法吗?
//file component.js
import Base from './base';
const message = "hello";
class Alert extends Base {
initialize() {
this.render();
}
}
export default Alert;
和
//file base.js
class Base {
render() {
alert(message);
}
}
export default Base;
最佳答案
这不起作用,因为JavaScript具有lexical scope而不是动态范围。
词法作用域意味着变量是否可访问取决于变量在源文本中的位置,而不取决于运行时信息。
简化示例:
function foo() {
var bar = 42;
baz();
}
function baz() {
console.log(bar); // error because bar is not in the scope of baz
}
注意:对于类或ES6来说,这并不是新问题,总是如此。
关于javascript - 具有扩展类和模块的es6变量范围,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35202865/