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

  • 本文关键字:typeof hi NaN 数字 javascript nan
  • 更新时间 :
  • 英文 :


我正在玩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作为最终结果

您可以在此处查看优先级表

最新更新