NaN类型(not a number),意思是非数值。但是它属于number 类,typeof出来的类型是number
官方的说明是检测一个变量是否为“非数值”但是个人认为应该是“检测一个变量是否为数值”。使用函数isNaN,这个函数的返回结果是布尔类型。
例子1
var name ="萧智豪";
console.log(isNaN(name));
返回结果:true
上述例子说明,string类型也属于NaN
例子2
var age="23";
console.log(isNaN(age));
返回结果为false
例2说明,尽管加了双引号,只要是引号内是纯数字,函数isNaN就会自动将此变量转换成数值输出。转换仅每次输出有效,并没有实际转换成数值。使用typeof检测数值类型输出仍然为string。
数值提取
官方提供三种函数:Number,parseInt,parseFloat
使用语法:
例3
var age ="23";
age=Number(age);
console.log(age);
返回结果:16
成功转换
例4
var name="萧智豪";
console.log(Number(name));
返回结果:NaN
例4说明,强转换没有数值的字符串返回的值是一个NaN。
parseInt
parseInt用于提取字符串中的整型。
例5
var paddingVal="20px";
paddingVal=parseInt(paddingVal);
console.log(paddingVal);
返回结果:20
成功提取
例5
var marginVal="a20px";
marginVal=parseInt(marginVal);
console.log(marginVal);
返回结果:NaN
例5说明使用parseInt提取数据时若不是以数值开头的字符串,则转成NaN
parserFloat与parseInt类似,提取时从整数开始直至到第一个浮点的结束为止。
例6
var leftVal="12.784.23131px";
leftVal =parseFloat(leftVal);
console.log(leftVal);
返回结果:12.784
说明:NaN与任何内容都不相等,包括自己
讲完。