这个 class 的constructor为什么不报错?
```class a{
constructor(){
id:1;
val:2
}
}
let b=new a;
```
如上,这个class可以正常被调用,id和val也没有生成,但是这个写法并不会报错,为什么? id 那块是 js 的 label 语法,基本没人用,也没人教,但是 js 确实有这个语法
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/label
---
let b=new a; 里的 new a 可以不需要后面的括号,这也是合法的语法 等价于 let b = new a() 楼上正解
碰到这种问题可以去https://astexplorer.net/直接看AST结构
输入
```js
function aa() {
id: 1;
}
aa()
```
发现`id: 1;`被解析成了一个`LabeledStatement`
直接搜索就可以找到https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/label shabby 发表于 2024-4-17 16:33
id 那块是 js 的 label 语法,基本没人用,也没人教,但是 js 确实有这个语法
https://developer.mozilla. ...
label 我恁是没往这想啊,我还以为是 constructor 里有什么特殊作用{:4_108:} 李恒道 发表于 2024-4-18 00:13
楼上正解
碰到这种问题可以去https://astexplorer.net/直接看AST结构
输入
道哥的这个AST网站好,Mark一个
页:
[1]