ES2018 学习笔记(3)标识符

以下内容来至 es2017 语言规范和 javascript 高级程序设计(第三版)

标识符

红宝书 3.1.2 中,对标识符如是定义:

An identifier is the name of a variable, function, property, or function argument.

我对此存有疑问——属性名是不是标识符?

ES 规范如此定义:

Identifier

IdentifierName but not ReservedWord

属性

ECMAScript 规范中对属性如下定义:

property

part of an object that associates a key (either a String value or a Symbol value) and a value

属性名(上面提到的 key)其实是一个字符串或者 Symbol 类型值。

属性名

规范如此定义:

PropertyName [Yield, Await]:

LiteralPropertyName
ComputedPropertyName[?Yield, ?Await]

属性访问器

Property Accessors

总结为两种表示法:

  • 点表示法,例如:Object.create
  • 方括号表示法,例如:Object['create']

其中,点表示法中要求 . 之后必须跟着 IdentifierName。我想红宝书里说的是这种情况,并没有包含另一种表示法。

回看上面提到的标识符的定义,这么写的

IdentifierName but not ReservedWord

我们可以在代码中进行如下实验:

var null  

// 异常:Uncaught SyntaxError: Unexpected token null

Object.null

// 正常

总结

属性名不是标识符。红宝书的定义比较通俗,但是总结的不算准确。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值