今天居然看到的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