我正在玩JavaScript的NaN,在对数字/字符串的结果使用typeof运算符时发现了一些奇怪的行为。为什么会这样?
typeof 90/"hi"
按(typeof 90)/"hi"
执行,变为"number"/"hi"
=> NaN
typeof (90/"hi")
=> typeof NaN
=> "number"
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
我的猜测是,当你编写typeof 90/'hi'
时,它首先得到90(数字(的类型,然后将其除以产生NaN的"hi"。基本上等于'number'/'hi'
.当您在括号中包含 90/'hi' 时,它首先从数字 (90( 除以字符串 'hi' 中获取 NaN,然后获取 NaN 的类型,即 'number'。
优先级是这里的答案:
typeof 90/'hi'
变得'number'/'hi'
那是因为typeof 90
是"数字",它给出了NaN
作为最终结果
您可以在此处查看优先级表