我的vim语法突出显示只是让我相信status
是JavaScript中的关键字。
我可以在浏览器JavaScript中找到有关window.status
的文章。这是“关键字”status
的含义还是会有不同的内容?
关键字status
是什么?
答案 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
这样,您的编辑器就不会将名称突出显示为保留关键字。