今天居然看到的typeof的回傳結果居然是整數。還有圖中results的結果為什麼是1.
1、因為typeof優先權較高2、還是因為加法運算子優先權較高
typeof
var a=true; console.log(a);//返回true console.log(typeof a);//返回boolean console.log(typeof(typeof a));//返回"string"
實質上typeof a ? 1 : 2可以寫成這樣:
"boolean" ? 1:2
而這個三元表達式呼叫Boolean()對字串進行型別轉換,即:Boolean("boolean") ====>true所以回傳是1。 你可以試試將a賦值為false,回傳還是1:
var a=false; typeof a ? 1 : 2
這段語句是這麼編譯的(typeof a)? 1 : 2編譯的時候,換成了這種形式,就是這個結果。三元運算符
(typeof a)? 1 : 2
沒毛病
Boolean('string') => true
接你的例子,三元運算符,當typeof a 為true時,回傳的是 1,typeof a 為false的時候,回傳的是2。 前面100 + a;進行了型別轉換,所以100 + a = 101,所以results 也回傳1
1、因為
typeof
優先權較高2、還是因為加法運算子優先權較高
實質上typeof a ? 1 : 2可以寫成這樣:
而這個三元表達式呼叫Boolean()對字串進行型別轉換,即:
Boolean("boolean") ====>true
所以回傳是1。
你可以試試將a賦值為false,回傳還是1:
這段語句是這麼編譯的
(typeof a)? 1 : 2
編譯的時候,換成了這種形式,就是這個結果。三元運算符
沒毛病
接你的例子,
三元運算符,當typeof a 為true時,回傳的是 1,
typeof a 為false的時候,回傳的是2。
前面100 + a;進行了型別轉換,所以100 + a = 101,
所以results 也回傳1