當變數為'',false,null,undefined,0,NaN時,返回預設值 "hello world" 0 || 'ccc' "ccc" NaN || 'ccc' "ccc" 我感覺想不通一個問題 '' == false ==>true false == false ==>true null= ...
當變數為'',false,null,undefined,0,NaN時,返回預設值
var a=''
a || 'hello world'
"hello world"
var a=false a || 'ccc' "ccc" var a=null a || 'ccc' "ccc" var a=undefined a || 'ccc' "ccc"
0 || 'ccc'
"ccc"
NaN || 'ccc'
"ccc"
var a=[] a || 'ccc' [] var a={} a || 'ccc' Object {}
我感覺想不通一個問題
'' == false ==>true
false == false ==>true
null==false ==> false
undefined==false ==>false
那就是說null,undefined不等於false?
那為什麼
if(null){ console.log('null') }else{ console.log(222) } 列印: 222
if(undefined){ console.log('null') }else{ console.log(333) } 列印:333
上面兩段代碼不就是null,undefined就是等於false嗎?
無語了 想不通
求指教
樓下說隱式轉換
順便去谷歌了一下
看到了一些現象
現在知道是怎麼解釋了
數字跟字元串相加,轉換成string類型
1+'2'==>'12' '2'+11==>'211'
但是數字跟字元串相減呢,來看看
'2'-1==>1 3-'2'==>1
神奇吧,變成了number類型
當number類型跟boolean類型在一起,會起什麼反應呢,看看
12+true==>13 12+null==>12
哈哈 還是number類型
好 所以總結三條
1.number+string會轉換成string類型
2.number跟string相減的時候,會轉換成number類型
3.number跟boolean相加的時候,會轉換成number類型