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

标签 javascript wrapper built-in

有四个原始的内置对象包装器(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/

相关文章:

javascript - JSON.parse Dynamodb

javascript - 使用数组匹配正则表达式

javascript - 为什么没有官方 JavaScript 引用?

java - 包装类RAM

shell - 如何从 Ubuntu 命令行中删除 Maven Wrapper?

C++ Speex 到 Flac 包装器/库

c - 如何使用内置函数在运行时检查 msr.le?

sql - Informix 7.3 中是否有用于测试字母或数字数据的内置函数?

javascript - 为什么 html 元素文本不替换?

c++ - gcc 原子内置函数这么慢是正常的吗?