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

标签 javascript destructuring language-features

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

const {
  a,
  b
} = 0;

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

最佳答案

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

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

关于javascript - 为什么 JS 解构赋值对数字起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68165421/

相关文章:

javascript - Javascript 声明后变量解构赋值

clojure - 在另一个 map 中解构一个 map ?

language-agnostic - 单一决策和行动陈述的首选风格是什么?

javascript - 是否有处理浏览器大小调整的最佳实践?

javascript - javascript是否有类似Object.assign之类的东西,其中包括可枚举的: false properties when copying objects?

javascript - fullcalendar javascript 问题 - 它没有在 IE 中显示事件?

javascript - JSFIDDLE 上没有错误,但站点和 jslint 上有错误

list - Haskell Tuple 在无限列表上的解构在将 Tuple 作为参数解构时与使用 let 解构时的行为不同

regex - 在哪些语言中使用用户提供的正则表达式是一个安全漏洞?

c# - ?= 运算符有哪些优势或劣势?