gpt4 book ai didi

javascript - 为什么没有 Null 内置对象包装器?

转载 作者:行者123 更新时间:2023-11-28 15:16:15 25 4
gpt4 key购买 nike

有四个原始的内置对象包装器(String、Number、Boolean 和 Symbol(ES6))

既然 null 是一个对象,为什么没有 Null 内置对象包装器,或者如果它是面向原始值的话,也可能没有定义?

我想不出用例,但它没有意义吗?

最佳答案

首先,null不是一个对象。 ( typeof 如此标识它的原因是 long-standing bug 的结果。)

拥有空包装器的概念对我来说听起来很荒谬,因为这本质上是使用一个对象来表示不存在的对象。此外,当涉及到比较和强制时,它会引发另一堆蠕虫。

什么会new Null() == null评价为?嗯,它一个对象,所以它不是 null 并且应该返回 false。然而,它代表 null,所以它应该返回true。或者是new Null() == null正确同时new Null() === null是假的吗?怎么样new Null() == undefined ?呃,JavaScript 强制系统已经够复杂的了。

此外,JavaScript 有两个“无”值( nullundefined )就已经够糟糕的了。添加第三个 ( new Null() ) 是一个糟糕的主意。

因此,添加 new Null()会增加所有这些复杂性,为什么呢? null 对象有什么可能用途?能够在本质上为空的东西上设置属性并调用方法吗?如果有人需要做类似的事情,那么您要么做错了,要么实际上想要更接近 Java 的 Optional<T>类型。

(不要让我开始使用 undefined 包装器。)

关于javascript - 为什么没有 Null 内置对象包装器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33802445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com