你不知道的js之隐式强制类型转换

你不知道的js之隐式强制类型转换

1.| |和&&

注:


  1. undefined
  2. null
  3. false
  4. +0
  5. -0
  6. NaN
  7. ” ”
    以上为假值,其余都是boolean真值

&&和| |运算符的返回值并不一定是布尔类型,而是两个操作数其中的一个值
var a = 42;
var b = "abc";
var c = "null";

a||b;//42
a&&b;//"abc"

c||b;//"abc"
c&&b;//null

| |和&&会对第一个操作数执行判断,如果其值不是布尔值,先进行boolean强制类型转换 然后再判断
对于| | 如果说条件判断是true就返回第二个操作数 , false就返回第一个操作数
对于&& 如果说条件判断是true就返回第一个操作数 , false就返回第二个操作数
条件语句中的判断也会先转化为布尔值在进行判断

2.相等比较中的隐式强制类型转换(==)

1.字符串与数字之间——先把字符串转换为数字再比较

var a = 42;
var b = "42";
a==b;//true

2.其他类型与布尔类型——先把布尔类型转换为数字再比较

var a = 42;
var b = true;
a==b;//false

3.null与undefined——–直接相等

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

以下是经常出现的相等比较

"0" == null;        //false
"0" == undefined;   //false
"0" == false;           //true
"0" == NaN;         //false
"0" == 0;               //true
"0" == "";          //false

false == null;      //false
false == undefined; //false
false == NaN;       //false
false == 0;             //true
false == "";            //true
false == [];            //true
false == {};        //false

"" == null;         //false
"" == undefined;    //false
"" == NaN;          //false
"" == 0;                //true
"" == [];               //true
"" == {};           //false

0 == null;          //flase
0 == undefined;     //flase
0 == NaN;           //flase
0 == [];                //true
0 == {};            //flase

作者总结

0 false "0" [] ""任意两个之间通过强制类型转化都是相等的

注:false== “false” //false和[ ] == [ ] //false

==两边有[] "" 0 尽量不要使用==
两边都有true和false 千万不要使用==


本文为作者原创,写的有不对的地方希望大神能指出来

都看到这里了,点播关注再走也不迟

猜你喜欢

转载自blog.csdn.net/qq_40776048/article/details/81514225