JavaScript语法高亮 - 状态是关键字? - 它用于什么?

时间:2018-04-06 02:50:22

标签: javascript

我的vim语法突出显示只是让我相信status是JavaScript中的关键字。

我可以在浏览器JavaScript中找到有关window.status的文章。这是“关键字”status的含义还是会有不同的内容?

关键字status是什么?

2 个答案:

答案 0 :(得分:1)

如果您在控制台中玩游戏。您可以执行以下操作:

-> status
<- ""

-> window.status
<- ""

-> status='333'
<- "333"

-> status
<- "333"

-> window.status
<- "333"

这对我来说表示关键字status只是window.status属性的别名。我到底确切地window.status究竟是什么。

编辑:在阅读下面的评论后,我意识到windows对象的属性本质上是全局。所以这使得状态与window.status相同,而不是我上面提到的别名。

有关窗口对象的信息,请参阅此Stack Overflow: Is window really global in Javascript?

答案 1 :(得分:1)

Mozilla documentation(比ECMA reference更容易阅读)中,我们在未来保留关键字部分下找到了status关键字。

>

因此,它被视为关键字。

但是,JavaScript会在各个地方(例如经过一段句号后)接受保留的关键字:

a = {}
a.default = 123
a.status = 555

即使我将这两个名称视为该语言的保留关键字,我还是在这里设置了对象default的{​​{1}}和status成员。

实际上,如果您一直在使用Promise对象,则可能已经注意到a关键字用作可能的回调之一:

catch

以下是相关的语法条目:

Promise.all([a, b, c])
       .then(...)
       .catch(...)     <-- this is a reserved keyword
       .finally(...)   <-- this is a reserved keyword

IdentifierName是任何标识符(或多或少Identifier : IdentifierName but not ReservedWord MemberExpression : PrimaryExpression MemberExpression [ Expression ] MemberExpression . IdentifierName <-- look at this one MemberExpression TemplateLiteral SuperProperty MetaProperty new MemberExpression Arguments ,加上所有Unicode字符...它们实际上遵循标识符的Unicode定义。)包括保留关键字。

我们可以看到,除了[A-Z_$][A-Z_0-9$]*ReserverWord之类的新异常(此处未显示,请参见{{1 }}。

因此,在严格模式下(即在节点模块中),如果您编写以下内容,则会出现错误:

new

在非严格模式下,super不是保留关键字,因此是允许的。

在访问变量成员时确保其工作的一种方法是使用数组语法。例如:

SuperProperty

这样,您的编辑器就不会将名称突出显示为保留关键字。