有人可以解释 null 和 undefined 的这个简单概念,更具体地说,单双和三等于,或者你能 link 最好的解释

Can someone explain this simple concept of null and undefined, more specifically single double & triple equals, or can you link the best explanation

在同一个运算符中,null 如何等于 undefined 而不等于 undefined。

未定义 == null

true

未定义!== 空

true

未定义===空

false

未定义!=空

false

undefined 和 null 是空变量。但是要了解上面的内容,您必须了解比较运算符。 == 是可以转换的比较运算符。 === 真正测试它是否相同而不进行类型转换。所以 null 实际上与 undefined 相同。当您第一次想到它时有点难以理解,但实际上并没有那么难。一些例子:

'' == '0'           // false
0 == ''             // true
0 == '0'            // true

false == 'false'    // false
false == '0'        // true

false == undefined  // false
false == null       // false
null == undefined   // true

== 在执行实际比较(进行类型强制)之前将变量值转换为相同类型

=== 不进行类型强制转换并且 returns 仅当 值和类型 相同时才为真正在比较的两个变量。

让我们来看一些例子:

console.log(5 == "5"); // no type coercion is being made - hence, the result is true.

console.log(5 === "5"); // type coercion is being made, value is the same but the data types are not (number vs string);

console.log(undefined == null); // should be true because type coercion is not being made and the data values are both falsy!

console.log(undefined !== null); // should be true cause type coercion is being made and the data types are differnt!

console.log(undefined === null); // // should be false cause type coercion is being made and the data types are differnt.


console.log(undefined != null); // should be false cause type coercion is not being made and the data values are both falsy!

请在下面找到我的答案。

"==" 在进行比较之前强制转换变量的类型。 一世。所以 undefined == null 是真的,因为两个变量都强制为假(因为它们都表示一个空值)并且 post 进行比较使它们相等。

!== 进行严格比较,所以类型没有改变,如果是 undefined 则类型是“undefined”,如果是 null 则类型是“object”,可以使用 typeof 验证。

二。所以由于类型不匹配,!== return true 即未定义 !== null.

三。同样的方式 === 进行严格比较,所以 undefined === null 是 false,因为类型只是不同

四。最后 undefined != null 为 false,因为 != like == 将变量的类型强制为 false,然后进行比较。因此它们似乎都等于 != 而它 return false.