xgqfrms™, xgqfrms® : xgqfrms's offical website of cnblogs! xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!

你所不知道的 JS: null , undefined, NaN, true==1=="1",false==0=="",null== undefined

1

1

1

=== 相等全部相等

 

==  相等部分相等

 

demo:

 

1
2
3
4
5
6
7
8
9
10
11
12
var x=0;
undefined
var y=false;
undefined
if(x===y){
    console.log("all equal!")
}else if(x==y){
    console.log("just value equal!")
}else{
    onsole.log("not at all equal!")
}
VM3163:1 just value equal!

 

 

 

1

 null == undefined

 

 true == 1 == "1"

 false == 0 == ""

 "" + ? == "?" (anything

 null (value) == 0   (仅当 null + 数字时,成立!)

 

false+0;// false==0
0
true+0;// true==1
1

0+undefined;
NaN
0+null;// null (value)==0; null==0; false
0
0+NaN;
NaN

1+undefined;
NaN
1+null;// null (value)==1; null==0; false
1
1+NaN;
NaN

 


NaN+"";
"NaN"
null+"";
"null"
undefined+"";
"undefined"

true+"";
"true"
false+"";
"false"


 

typeof null;
"object"

typeof NaN;
"number"

typeof undefined;
"undefined"

typeof false;
"boolean"

typeof true;
"boolean"

typeof "";
"string"

typeof 0;
"number"

 

1

1

1

1

1

x

1
2
3
4
5
6
undefined==null;
true
NaN==null;
false
NaN==undefined;
false

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<script>
         var a;
         if(a==undefined) alert('undefined');//true
         if(a==null) alert('null');//true
         if(null==NaN) alert('NaN=null');//undefined
         if(undefined==NaN) alert('NaN=undefined');//undefined
         if(NaN) alert('NaN');//undefined
</script>null==0;
false
null===0;
false
undefined==0;
false
undefined===0;
false
null==undefined;
true
null===undefined;
false
<script>
    var a=null;//(0/false)
    var b=undefined;//(false)
    var c = 7 ;
    alert('undefined+null='+(a+b));//NaN
    alert('c+null='+(a+c));//7
    alert('c+undefined='+(b+c));//NaN
</script>
 
chrome 测试结果!
个人认为:
null 的取值是(0/false),
undefined 的取值是(false/NaN)。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
null==0;
false
null===0;
false
undefined
undefined
undefined==0;
false
undefined===0;
false
null==false;
false
undefined==false;
false

 

1
2
3
4
5
6
7
8
9
10
11
12
NaN==0;
false
NaN==false;
false
typeof NaN;
"number"
NaN==undefined;
false
typeof null;
"object"
typeof undefined;
"undefined"

 

 

 

false == 0, true == 1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
null+false;
0
undefined+false;
NaN
NaN+false;
NaN
NaN+null;
NaN
false+false;
0
false+true;
1
true+true;
2
null+true;
1
undefined+true;
NaN
NaN+true;
NaN
1
2
3
4
5
6
7
8
false==0;
true
false===0;
false
true==1;
true
true===1;
false
1
2
3
4
5
6
7
8
0==false;
true
0===false;
false
1==true;
true
1===true;
false

 

 

 

1

1

1
2
3
4
5
6
7
8
//前端JS blogs:
 
<!-- http://www.ruanyifeng.com/blog/2014/03/undefined-vs-null.html -->
<!-- http://yanhaijing.com/javascript/2014/01/05/exploring-the-abyss-of-null-and-undefined-in-javascript/ -->
 
//前端JS试题:
 
<!-- https://github.com/N-ZOO/everycode/issues/13 -->
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    <script>
    var a;
        if(a==undefined) alert('undefined');//true
        if(a==null) alert('null');//true
        if(null==undefined) alert('null==undefined');//true
        if(undefined==null) alert('undefined==null');//true
    var b =5 ;
    alert('b+undefined=||b+null='+(a+b));//NaN
</script>
<script>
    var a = null;//(0/false)
    var b = undefined;//(false)
    var c = 7;
    var x;
    alert('undefined+null='+(a+b));//NaN
    alert('c+null='+(a+c));//7
    alert('c+undefined='+(b+c));//NaN
    if(x==undefined) alert('undefined');//true
    if(x==null) alert('null');//true
    if(null==NaN) alert('NaN=null');//undefined
    if(undefined==NaN) alert('NaN=undefined');//undefined
    if(NaN) alert('NaN');//undefined
</script>

 


 

1

1

1

1

1

1

1

1

 

=== 与 == 区别?

使用 === 判断 两个变量是否完全相等

== 可能会导致,判断错误[code=javascript]

复制代码
//使用 === 判断 两个变量是否完全相等
//== 可能会导致,判断错误

(undefined == 0)
//false
(null == 0)
//false
(null+1)
//1
(undefined+1)
//NaN
(undefined===null)
//false
(undefined==null)
//true
复制代码

 

 

 

 

1

1

1

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
var a;
undefined
a==null;
true
a==undefined;
true
a===null;
false
a===undefined;
true
 
 
a=0;
0
a===undefined;
false
a==undefined;
false
a===null;
false
a==null;
false
 
a
0
a+null;
0
a+undefined;
NaN
a+NaN;
NaN
 
a
1
a+NaN;
NaN
a+undefined;
NaN
a+null;
1
 
null==0;
false
null===0;
false
undefined==0;
false
undefined===0;
false
null==undefined;
true
null===undefined;
false

 

 

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

posted @   xgqfrms  阅读(223)  评论(6编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示