【问题标题】:Why does JS desctructuring assignment work with numbers为什么 JS 解构赋值对数字起作用
【发布时间】:2021-09-10 21:07:35
【问题描述】:

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

const {
  a,
  b
} = 0;

console.log(a, b); // undefined, undefined

【问题讨论】:

  • 为什么不应该呢?
  • 顺便说一句,不能抛出语法错误,因为它不是应用程序执行期间可以抛出的运行时错误。如果抛出异常,则意味着代码在语法上是正确的并且正在运行。

标签: javascript destructuring language-features


【解决方案1】:

当您访问基元的属性时,基元的对象包装器用于查看原型上是否存在这样的属性。例如,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);

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

【讨论】:

  • 谢谢你,既然你提到它,这完全有道理。看到它在行动中仍然很奇怪......
猜你喜欢
  • 1970-01-01
  • 2020-12-24
  • 2018-06-16
  • 2019-10-03
  • 2021-07-01
相关资源
最近更新 更多