作为标题所述,为什么这段代码不会抛出 SyntaxError?我认为你只能解构对象。
const {
a,
b
} = 0;
console.log(a, b); // undefined, undefined
const {
a,
b
} = 0;
console.log(a, b); // undefined, undefined
当您访问原始数据类型的属性时,将使用该原始数据类型的对象封装器来查看原型中是否存在这样的属性。例如,Number.prototype.toFixed
存在。因此,您可以理论上执行以下操作:
const {
toFixed
} = 0;
console.log(toFixed);
Number.prototype.a = 'foo'; // just for example, please never do this
Number.prototype.b = 'bar';
const {
a,
b
} = 0;
console.log(a, b);
它不是无效语法,只是非常奇怪。