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

问题描述

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

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);

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...