为什么 JS 解构赋值对数字起作用

Luk*_*tal 10 javascript language-features destructuring

正如标题所说,为什么这段代码不抛出 SyntaxError?我以为你只能解构对象

const {
  a,
  b
} = 0;

console.log(a, b); // undefined, undefined
Run Code Online (Sandbox Code Playgroud)

Cer*_*nce 8

当您访问基元的属性时,基元的对象包装器用于查看原型中是否存在这样的属性。例如,Number.prototype.toFixed存在。所以理论上你可以做类似的事情

const {
  toFixed
} = 0;

console.log(toFixed);
Run Code Online (Sandbox Code Playgroud)

或者

Number.prototype.a = 'foo'; // just for example, please never do this
Number.prototype.b = 'bar';

const {
  a,
  b
} = 0;

console.log(a, b);
Run Code Online (Sandbox Code Playgroud)

这不是无效的语法,只是真的很奇怪。