javascript - JavaScript中有多少种文字?

标签 javascript regex literals template-literals

我正在从事一些涉及正则表达式的项目,突然遇到了一个正则表达式文字,如下所示:

/ab+c/g

我知道在编程语言中,有一些固定的可能文字列表,例如 C 语言中的 integerfloat 等。

然后我搜索了 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),您会看到诸如 ObjectLiteralArrayLiteral 之类的术语,但它们也称为 < em>{Object,Array}初始化器。

关于javascript - JavaScript中有多少种文字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57871943/

相关文章:

c# - gridview中自动相乘两列

javascript - 从字符串数组分配回调事件 (PIXI.js)

javascript - 使用正则表达式每 n 行分割一个字符串

unicode - 日本 COBOL 代码 : rules for G literals and identifiers?

javascript - 将字体 ‘Font Awesome’ 升级到版本 5 后图标消失

javascript - Enzyme/Jest -- 用 DOM 树编写 TDD

regex - 匹配某个单词前后最多 5 个单词

javascript - 无法使正则表达式起作用

ruby - 按空格拆分字符串,忽略转义的空格

c - 在字符串文字上使用 strdup 的优点和缺点