关于js中的typeof运算符

新手上路,请多包涵

var a = "abc"*"def";
console.log(typeof a);//number
为什么会输出number而不是NaN?

阅读 2.6k
4 个回答

typeof只有6钟返回类型:number,string,boolean,function,object,undefined(ES6新增symbol类型)。
因为a是NaN,typeof NaN输出number
NaN并不意味着是一个数字,它的类型是数字

值为 IEEE 754“Not-a-Number”的数字值。
这里的a就是NaN,
执行:typeof NaN,结果就是'number'
typeof操作符结果种类有:
MDN typeof操作符,楼上也提供了规范的链接。

因为操作数不是数值,乘法操作符会在后台调用 Number()将其转换为数值,但是“abc”和“def”都是字符,Number()会将其转换成NaN,而NaN,也是一个特殊的数值,类型自然返回number。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题