js中的NaN

前端入门学习心得**

NaN 是英语“not a number”的意思,即“不是一个数”。 有意思的是,虽然NaN表示“不是一个数”,但它本身却是一个数字型值:

console.log(typeof(NaN)); //number

JavaScript中用一个数与0求模将得到NaN,因为是没有意义的,结果“不是一个数”。

console.log(10%0);//NaN

人们通常不会刻意使用NaN,往往在遇到一些计算错误时会得到这个值。
正常来说,减法运算应该返回一个数字,那此时返回什么呢?
例如,当计算结果应该是一个数字,但是确实“得不到数字”时,JavaSeript往往会返回NaN。例如:

console.log("李白"-"杜甫");//NaN

试图让字符串“李白”减另个字符串“杜甫”,这是没法计算出结果的,因为字符串减字符串没有任何意义。
有非数值参与的计算
凡是有 NaN 参与的数学运算 , 结果都是 NaN,例如:

var num;  //undefinded
console.log(num+100);//NaN
console.log(num-100);//NaN
console.log(100-'a');//NaN
console.log(100-'100a');//NaN
console.log(100-[1,2,3]);//NaN

JavaScript返回NaN,表达了“不是一个数字”的意义,值得一提的是,这个不正确的减法运算在C++或Java中将产生错误,从而使程序崩溃。

int a=10;
	char setString[]="10";
	int sum;
	sum=a+setString; 
	cout<<a<<endl;
	cout<<setString<<endl;
	cout<<sum<<endl;

在这里插入图片描述

        int a=10;
		String s = "10"; 
		int sum;
		sum=a+s;
		System.out.println(a);
		System.out.println(s);

在这里插入图片描述
可见JavaScript中设计了NaN一值,可以减少很多程序崩溃的机会。

我们在进行强制类型转换的过程中就会发现,以下返回的都为NaN,例如:

console.log(Number('10a'));//NaN
console.log(Number('aa1'));//NaN
console.log(Number(undefined));//NaN
console.log(Number([1,2,3]))//NaN
console.log(Number(function(){console.log(1)}))//NaN

parseInt() 函数把值转换成整数,但只有对String类型调用这些方法,函数才能正确运行;对其他类型返回的都是NaN。parseInt()方法类型转换处理过程为:在判断字符串是否是数字值之前,先仔细分析该字符串。parseInt()方法首先查看位置0处的字符,判断它是否是个有效数字;如果不是该方法返回NaN,不再继续执行其他操作。

console.log(parseFloat('a1'));//NaN
console.log(parseInt('a1'));//NaN

使用 isNaN() 全局函数来判断一个值是否是 NaN 值,返回结果为true则表示不是一个数,返回结果为false则表示是一个数

console.log(isNaN(100));//false
console.log(isNaN('100'));//false
console.log(isNaN(''));//false
console.log(isNaN(5-2));//false
console.log(isNaN('路漫漫'));//true
console.log(isNaN([1,2,3]));//true

NaN 与所有值都不相等,包括它自己,

console.log(NaN==NaN);//false
console.log(NaN!=NaN);//true
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值