我只是在javascript中测试“typeof”,实际上不知道为什么结果是这样的。
/ * ** * /
var cota,
plouto;
alert(typeof plouto/cota); //NaN
/ * ** * /
var cota,
plouto;
alert(typeof (plouto/cota)); //number
/ * ** * /
var cota,
plouto;
var flo = plouto/cota;
alert(typeof flo); //number
答案 0 :(得分:6)
第一个提醒NaN
,因为首先执行typeof plouto
,结果除以cota
。结果不是数字,因此NaN
。你可以想象它是这样的:
(typeof plouto) / cota
第二个将plouto
除以cota
,这不是一个数字(因为两个变量都是undefined
),但NaN
的类型实际上是{{1}这可能令人困惑!
第三个例子也是如此。
答案 1 :(得分:3)
typeof
运算符优先于数学运算符,因此首先执行。
您从typeof plouto/cota
得到的是typeof plouto
,然后返回值除以cota
- 导致非数字。在进行数学运算时,其中一个“参与者”不是数字,整个结果也将是NaN。
另外两种情况更简单:NaN的类型是数字。可以认为这相当于对象的null
。