JavaScript类型转换之隐式类型转换

JavaScript中隐式类型转换其实可以算是基于显式类型转换之上来实现的,所以要先对JavaScript中显式类型转换有一定的了解。
点击查看


1.isNaN(mix) – > 判断mix是否是NaN
判断步骤:现将mix用Number(mix)转换成数字型,再将转换后的结果拿去与NaN比较,如果是NaN,返回true,表示mix是NaN,不是则返回false,表示不是NaN。

mixNumberisNaN
123123false
abcNaNtrue
123abcNaNtrue
NaNNaNtrue
null0false
undefinedNaNtrue

注:因为是用Number(mix)实现转换的,所以转换后的值都应该是number型的。


2.++/-- 、+/-(正/负)
判断步骤:现将mix用Number(mix)转换成数字型,若能转换成数值型,再进行++/-- 、+/-(正/负)操作,若无法转换成数值型,则返回NaN。

值mixNumber++- -+ (正)- (负)
"123"123124122123-123
"abc"NaNNaNNaNNaNNaN

3.+ 加号
判断步骤:
当 + 两边的值有一个是字符串时,调用String(mix),实现两个字符串连接,返回string类型。
当 + 两边的值没有字符串时,调用Number(mix),实现两个数相加,返回number类型。

	var a = "1" + 2;
	console.log(a);  -- > 12
	console.log(typeof(a)); -- > string
	var a = 1 + 2;
	console.log(a);  -- > 3
	console.log(typeof(a));  -- > number

特别的:Number(undefined) – > NaN ,而任何数加NaN都等于NaN,

	var a = 123 + undefined;
	console.log(a);  -- > NaN
	console.log(typeof(a));  -- > number

4.-(减)、(乘)、/(除)
判断步骤:现将mix用Number(mix)转换成数字型,若能转换成数值型,再进行 - (减)、
(乘)、/ (除) 操作,若无法转换成数值型,则返回NaN。

	var a = 123 - true;
	console.log(a);   -- > 122
	console.log(typeof(a));  -- > number
	var a = "b" - true;
	console.log(a);   -- > NaN
	console.log(typeof(a));  -- > number


5 . &&,||, !
只有:false, 0, -0, “”, NaN, null, undefined能转换成false,
其它大多数的值都会转换成true,不能说全部,因为存在数字和字符串以及对象的值为false,
也就是说,其实直接用真值转换来判断一个函数的参数是否传进来了,这是不不太安全的。


6.< , > ,<= , >=

	var a = 1 > "2";
	console.log(a);  -- > false
	console.log(typeof(a));  -- > boolean

记住一点:
字符串与字符串比较,用ASC码进行比较,
而 字符串与数字比较,是先转换成数值型再比较数字大小。
但都是返回Boolean型。


7.== , !==

	var a = 1 == "1";
	console.log(a);  -- > true
	console.log(typeof(a)); -- >boolean
	var a = 1 != true;
	console.log(a);  -- > false
	console.log(typeof(a));  -- > boolean

拓展:
(1) 相对于上面的(7. == 、 !=),对于 === 、!==,它们不发生类型转换。之间的不同之处看下面,一看就醒豁了。

1 == "1"   -- > true  
1 === "1"  -- > false //必须两边都一样才返回true

(2) false > true – > 相当于 0 > 1 – > 返回false

(3) 2 > 3 < 1 – > 相当于 false < 1 – > 0 < 1 – > 返回true

(4) undefined > 0 、undefined < 0 、undefined = 0 – > 都返回false
And: null > 0 、 null < 0 、 null = 0 – > 都返回false
但是:undefined == null – > true

(5)对于NaN – > NaN不等于任何数,包括它本身, 这哥们儿自己都不认了,还会认其它的吗?

NaN == NaN  -- > false
NaN === NaN  -- > false
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值