搜索

首页  >  问答  >  正文

javascript - 关于js的typeof的疑问

今天居然看到的typeof的返回结果居然是整数。还有图中results的结果为什么是1.

学习ing学习ing2723 天前786

全部回复(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
  • 取消回复