var a = "abc"*"def";
console.log(typeof a);//number
为什么会输出number而不是NaN?
var a = "abc"*"def";
console.log(typeof a);//number
为什么会输出number而不是NaN?
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。
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
NaN 定义在 IEEE754 浮点数规范里,他的值就是NaN。
在js中没有NaN这类型,js中类型只有
对象
数字(底层分为整数和浮点数)
字符串
布尔
这几种
http://www.ecma-international...
http://www.ecma-international...