ES2015模块与ES5全局变量由'export'关键字决定?

时间:2015-12-28 23:30:54

标签: javascript ecmascript-6

我正在阅读ES2015个模块,并试图确保我理解这个新功能。

由于没有类似"use strict"的内容,浏览器如何确定.js文件是ES2015模块v。一个带有一堆全局变量的ES5文件?只是至少出现了一个“export”声明吗?

// This file is interpreted as ES5 with globals
function fun1() {...}
function fun1() {...}
// This file is interpreted as ES2015 module
function fun1() {...}
function fun1() {...}
export default function(){...}

2 个答案:

答案 0 :(得分:2)

  

由于没有类似“use strict”的内容,浏览器如何确定.js文件是ES2015模块vs.s.带有一堆全局变量的ES5文件?

浏览器如何确定这不是,据我所知,尚未确定。有人提到module元素与script元素不同,但没有module元素defined (yet?)。目前尚不清楚是否需要module元素; script元素可以使用import,并且可以从另一个文件加载模块而无需新的元素类型。但这是观看这个空间的问题; MDN says目前还没有浏览器支持import。但它可能是因为它在非浏览器世界中的使用方式,并允许捆绑。

在非浏览器世界中,它取决于它的使用方式:如果它是import的目标,则在导入时将其视为模块。如果您像其他任何脚本一样加载和运行它,它就像任何其他脚本一样对待。

答案 1 :(得分:0)

根据this page,模块无法进入script标记内,它们必须位于module个标记内。因此,script标记加载的代码不能被视为模块,module标记加载的代码必须是模块。