我正在玩JavaScript的NaN,并且在数字/字符串的结果上使用typeof运算符时发现了一些奇怪的行为。 为什么呢?
答案 0 :(得分:5)
typeof 90/"hi"
执行为(typeof 90)/"hi"
,成为"number"/"hi"
=> NaN
typeof (90/"hi")
=> typeof NaN
=> "number"
答案 1 :(得分:3)
typeof NaN === 'number'; // Despite being "Not-A-Number"
来源:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof
并且typeof的优先级高于/
,因此您正在评估(typeof '90')/'hi'
,即NaN
来源:https://developer.mozilla.org/nl/docs/Web/JavaScript/Reference/Operators/Operator_Precedence
答案 2 :(得分:0)
答案 3 :(得分:0)
我的猜测是,当你写出90/'hi'
类型时,它首先获得90(数字)的类型,然后将其除以' hi'产生NaN。基本上它等于'number'/'hi'
。
当你包括90 /' hi'在括号中,它首先通过字符串' hi'从数字(90)的除法中得到NaN。然后得到NaN的类型,这是'数字'。