我正在从事一些涉及正则表达式的项目,突然遇到了一个正则表达式文字
,如下所示:
/ab+c/g
我知道在编程语言中,有一些固定的可能文字列表,例如 C 语言中的 integer
、float
等。
然后我搜索了 javascript 支持的文字列表,但没有找到满意的答案。
我尝试了节点提示并得到了以下有趣的结果:
> typeof /ab+c/g
'object'
> str = 'xyz'
'xyz'
> typeof `abc ${str}`
'string'
> typeof function f(x, y) {
... return x + y;
... }
'function'
> typeof {
... 'a': 'b'
... }
'object'
这证明了
正则表达式文字
本质上是对象文字
模板文字
本质上是字符串文字
函数文字
是函数文字
javascript 对象文字
是对象文字
尽管最后一个没问题,并且在很多地方定义了,但对我来说,正则表达式文字仍然是对象文字
是没有意义的。
写在哪里?如何找出 javascript 中可能的文字列表?
最佳答案
查看 the spec 的附录 A你会发现StringLiteral等的定义。顺便说一句,规范使用FunctionExpression,而不是FunctionLiteral。
同样相关的是11.8 Literals 。下面是
- NullLiteral::==
null
- BooleanLiteral::==
true
|假
- 数字文字
- 正则表达式文字
- 字符串文字
- TemplateLiteral 组件。
值得注意的是,undefined
不是文字。
正如该节所明确的,“文字”指的是缩写语法,与任何对象/基元区别无关。
在文本的其他地方(第 12 章 PrimaryExpression),您会看到诸如 ObjectLiteral 和 ArrayLiteral 之类的术语,但它们也称为 < em>{Object,Array}初始化器。
关于javascript - JavaScript中有多少种文字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57871943/