怎么JavaScript要有null?(翻译)

原稿地址

原文地址

JavaScript有众多怪癖和麻烦知晓的地点。其中null&
undefined就比较有意思。既然有了为什么JavaScript还要弄3个null?

JavaScript有成百上千尤其和难以明白的地方。其中null&
undefined就相比较有趣。既然有了干吗JavaScript还要弄二个null?

也等于相比较

对等相比

让我们早先由拥有看看上面的自查自纠探索null和undefined:

让大家开始由全部看看下边的对待探索null和undefined:

null >= 0; //true 

null <= 0; //true 

null == 0; //false 

null > 0; //false 

null < 0; //false
null >= 0; //true 

null <= 0; //true 

null == 0; //false 

null > 0; //false 

null < 0; //false

葡萄娱乐官方 1

葡萄娱乐官方 2

null怎么着能既大于或等于零,又小于或等于零,但又不等于零?(是否初阶难以置信总结机了,也不是很严格么)

null怎样能既大于或等于零,又小于或等于零,但又不等于零?(是或不是发端狐疑总结机了,也不是很严峻么)

 

 

要精通那或多或少,首先须求了然JavaScript怎样处理这个比较。在上边的事例中采纳了二种分化类型的运算符:
相等运算符[Equality Operators](==,===,!=
and!===)和涉嫌运算符[Relational Operators](>,<,>
=和<=)。 两者的干活章程不一样。

要通晓那或多或少,首先必要明白JavaScript如何处理那一个比较。在地方的例证中应用了二种不一样类型的运算符:
相等运算符[Equality Operators](==,===,!=
and!===)和关系运算符[Relational Operators](>,<,>
=和<=)。 两者的行事办法不相同。

 

 

等于运算符在对象范围举办比较。
若是多个操作数,运算符左右的事物是例外的品类,则运用严苛的可比(===或!==)。
因为null是二个对象,0是二个数字,它们不等于。

非常运算符在对象范围开展相比。
假如多个操作数,运算符左右的事物是不一致的门类,则使用严俊的可比(===或!==)。
因为null是3个对象,0是多个数字,它们不等于。

 

 

在关系运算符的意况下,三个操作数都更换为同一的类型。
在例子中给3个数字。当前情状下,JavaScript正在实践以下操作:

在提到运算符的意况下,七个操作数都更换为同样的连串。
在例子中给3个数字。当前情景下,JavaScript正在进行以下操作:

Number(null) &gt;= 0; //true
Number(null) &gt;= 0; //true

越来越解释一下. Number(null) 再次回到值 0 ,然后0 等于 0.

更进一步解释一下. Number(null) 重返值 0 ,然后0 等于 0.

 

 

我们来用undefined试下同样的例子:

大家来用undefined试下同样的例证:

undefined >= 0;//false 

undefined <= 0;//false 

undefined == 0;//false 

undefined < 0;//false 

undefined > 0;//false
undefined >= 0;//false 

undefined <= 0;//false 

undefined == 0;//false 

undefined < 0;//false 

undefined > 0;//false

葡萄娱乐官方 3

葡萄娱乐官方 4

 

 

首先直觉想到,那应当会是一致的结果。
即使JavaScript是同等的,但结果却再度是区其他。JavaScript先将undefined
转换为三个数字, 但Number(undefined葡萄娱乐官方, )不是0而是NaN
JavaScript规范中明确,与NaN
的各种相比较都会是false,甚至与 NaN开展比较也是。

第二向觉想到,那应当会是平等的结果。
就算JavaScript是一模一样的,但结果却再一次是不一样等的。JavaScript先将undefined
转换为二个数字, 但Number(undefined )不是0而是NaN
JavaScript规范中明确,与NaN
的各样相比较都会是false,甚至与 NaN进展比较也是。

 

 

理所当然算法上只怕如故有无数见仁见智,当前的解释也能证实部分标题

当然算法上大概依然有诸多不比,当前的解释也能印证一些难点

 

 

 

 

怎么存在null?

为什么存在null?

JavaScript须要八个空值吗?
纵然可以编制整个应用程序而不采纳null,但常见它是有1个null的地点。
使用的差别是打算。
壹个空值是特别中性的,其中1个undefined值平日是潜意识的,只是专擅认同值。

JavaScript要求贰个空值吗?
就算可以编制整个应用程序而不行使null,但平常它是有一个null的地点。
使用的界别是打算。
二个空值是尤其中性的,其中一个undefined值平日是无意的,只是暗中认同值。

 

 

例如在探寻一条数据的函数中。
当该数量不存在时,此函数再次来到null。否则重临数据。
通过这种办法,能够判定该函数重临的值是还是不是被设置为null,或许隐含结果的变量根本不安装。

譬如说在检索一条数据的函数中。
当该多少不设有时,此函数重临null。否则重回数据。
通过那种措施,可以判定该函数再次回到的值是不是被安装为null,恐怕隐含结果的变量根本不设置。

 

 

换句话说: null !== undefined

换句话说: null !== undefined