浏览器如何知道我的目标是ES6?

时间:2019-07-03 11:30:53

标签: javascript browser ecmascript-6 es6-class

我正在使用Typescript,最近我将转换选项更改为以ES6为目标,而不是ES5。

我使用的某种语法在ES5下始终可以正常运行,但是在更改目标之后,我开始在(Firefox)浏览器控制台中收到此错误:

Javascript ES6 TypeError: Class constructor Client cannot be invoked without 'new'

我将代码更改为适合ES6的语法,从而解决了该问题,但是我不了解浏览器如何首先知道会抛出此错误,因为之前使用的代码完全相同。

浏览器中的javascript解析器是否扫描代码库的 other 部分,并使用ES6查看它们是 re ,然后拒绝此行,因为它不匹配ES6代码其他地方

1 个答案:

答案 0 :(得分:1)

JavaScript没有输入任何特定的“模式”。

实际上,实际情况是您在声明class Client。这就是ES6语法,它带有特殊的警告,您必须使用new Client来实例化它。现在,您的编译器将此编译为向后兼容的function Client() ...。显然,您可以不使用function来呼叫new。那就是你在某个地方所做的。

因此,从classfunction的编译掩盖了该错误。但是当将class保留为class时(因为ES6目标模式不需要将其简化为function),浏览器实际上正在处理class该错误。