JavaScript:firefox拒绝class关键字,而chrome则没有

时间:2011-09-09 12:23:47

标签: javascript google-chrome firefox keyword

我正在尝试这段JavaScript代码:

class User(name) {
    this.name = name;
}

var class = new User("Kimo");

以上内容在JavaScript书籍中使用,我只是在玩它。

firefox 6.0.2(来自控制台)拒绝将'class'关键字作为变量名称(抱怨语法错误),而chrome 13.0.782.220m(来自开发人员工具)根本没有抱怨。< / p>

这让我想到,哪一个是对的?由于JavaScript中的类的概念不存在或者与其他OOP语言不同。另一方面,阻止开发人员使用它可能更明智。

我想知道为什么firefox和chrome之间的这种不同方法(我知道他们使用不同的引擎)。

由于

3 个答案:

答案 0 :(得分:3)

首先,您不能像这样在Javascript中创建。创建一个对象:

var User = {...};

或构造函数:

function User() {...}

是来自about.com的保留字(某些未在ECMA 262中列出,但在JScript中列出)和MDC - 保留供将来使用。确实,JavaScript暂时没有类。但是这个词在某种意义上是保留的,有一天它可以有这样的。

Mozilla对规则的处理比其他浏览器更严格,并且会出现语法错误。

另外:

JavaScript不仅仅是对象 Oriented 编程语言(OOP),它是Prototype-based Programming language

  

另一方面,防止开发人员使用它可能更明智。

由于JavaScript是由浏览器解释的,我不认为可以禁止使用保留字。在编译的代码中,您可以让编译器在产品可以使用之前就此类事情与您意见不一致。

另一件事 - 您可以在编辑器上编写JavaScript代码,但没有能力告诉您,您的代码有错误,或者您对变量使用保留字。

答案 1 :(得分:0)

错误是正确的行为。 Class是ECMAScript中的受限制关键字。

答案 2 :(得分:0)

Firefox还没有实现Class支持,如果你检查ecma6 browser support又称javascript(它是一个新的realease,它会有更多的例如class:D),你会发现mozilla的Class是不可能的,希望很快可用,ecma 6处于测试阶段,所以在所有浏览器都支持所有功能之前会有一段时间