搜尋

首頁  >  問答  >  主體

javascript - 關於js的typeof的疑問

今天居然看到的typeof的回傳結果居然是整數。還有圖中results的結果為什麼是1.

#
学习ing学习ing2723 天前787

全部回覆(5)我來回復

  • 天蓬老师

    天蓬老师2017-06-15 09:25:38

    1、因為typeof優先權較高
    2、還是因為加法運算子優先權較高

    回覆
    0
  • 大家讲道理

    大家讲道理2017-06-15 09:25:38

    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

    回覆
    0
  • 代言

    代言2017-06-15 09:25:38

    這段語句是這麼編譯的
    (typeof a)? 1 : 2
    編譯的時候,換成了這種形式,就是這個結果。三元運算符

    回覆
    0
  • 学习ing

    学习ing2017-06-15 09:25:38

    沒毛病

    Boolean('string') => true

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-06-15 09:25:38

    接你的例子,
    三元運算符,當typeof a 為true時,回傳的是 1,
    typeof a 為false的時候,回傳的是2。
    前面100 + a;進行了型別轉換,所以100 + a = 101,
    所以results 也回傳1

    回覆
    0
  • 取消回覆