typeof 90 /'hi'是NaN而typeof(90 /'hi')是数字。为什么这样?

时间:2017-11-15 13:36:15

标签: javascript nan

我正在玩JavaScript的NaN,并且在数字/字符串的结果上使用typeof运算符时发现了一些奇怪的行为。 为什么呢?

4 个答案:

答案 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)

优先权就是答案:

typeof 90/'hi'变为'number'/'hi',因为typeof 90是'数字'给出NaN作为最终结果

您可以查看优先级表here

答案 3 :(得分:0)

我的猜测是,当你写出90/'hi'类型时,它首先获得90(数字)的类型,然后将其除以' hi'产生NaN。基本上它等于'number'/'hi'。 当你包括90 /' hi'在括号中,它首先通过字符串' hi'从数字(90)的除法中得到NaN。然后得到NaN的类型,这是'数字'。