相关疑难解决方法(0)

什么是JavaScript中对象的"内部插槽"?

我试图在一点上理解ECMAScript 2015规范:对象的内部插槽.但这部分对我来说显得很不清楚,特别是这句话:

内部插槽对应于与对象关联并由各种ECMAScript规范算法使用的内部状态.

(它使用正确的语法吗?)有人能用英语解释这个概念吗?


到目前为止我能理解的是:

  • 内部插槽不是属性
  • 内部插槽在创建对象期间使用,但不会添加到对象本身
  • 最初,内部插槽是或​​具有undefined

javascript object ecmascript-6

18
推荐指数
1
解决办法
1928
查看次数

为什么 JavaScript 的可选链使用 undefined 而不是保留 null?

这是我在《为什么 TypeScript 编译器通过两次检查来编译其可选链和空合并运算符?》末尾顺便问的一个后续问题。 正如 TypeScript 传奇人物jcalz在评论中指出的那样,它确实值得提出自己的问题。

// Why does the JavaScript treat
x?.y
// as
x === null || x === void 0 ? void 0 : x.y
// instead of
x === null || x === void 0 ? x : x.y
// ?
Run Code Online (Sandbox Code Playgroud)

x == null,后者会保存null,而前者总是返回undefined

现代浏览器?.本身就支持,因此我们可以测试此行为。

const test = () => {
  console.log('undefined?.x\t\t==>\t', undefined?.x);
  console.log('null?.x\t\t\t==>\t', null?.x);
  console.log('null?.x === null\t==>\t', null?.x === null);
};

try {
  eval('null?.x'); …
Run Code Online (Sandbox Code Playgroud)

javascript language-design

3
推荐指数
1
解决办法
992
查看次数