js的类型转换

数值转换

  数值转换用到两个函数 Number() 和parseInt()

强制转化 :number()函数

      布尔值true/false  解析成1/0

      空字符‘’                解析成0

      null                        解析成0

      undefined               解析成NaN

     parseInt()

布尔值true/false  解析成 NaN

       空字符‘’                解析成NaN

       null                        解析成NaN

      undefined               解析成NaN

Number()转换比parseInt严格,前者整体解析,只要出现一个字符无法解析,整个转化就失败。后者逐个解析,只要第一位能解析,就可以解析成数值

例如:Number("34a5")  :  NaN

    Number("a2")      :   NaN

    parseInt("34a5") :  34

    parseInt("a2")      :NaN

对象转换数值

对象转化数值时候,显示调用自身valueOf()方法,如果返回原始类型(数值,布尔,字符串),则调用Number()函数,如果返回对象,则调用toString()方法,如果返回原始类型值,则对改值Number()方法,如果返回复合类型,则报错。

例子1

if (typeof {a:1}.valueOf() === 'object'){
	
    alert(Number({a:1}.toString()));   //NaN
} else {
	
   alert( Number({a:1}.valueOf()));
}
等同于

Number({a:1})
结果:NaN

例子2

var obj = {
	    valueOf: function () {
	            console.log("valueOf");
	            return {};
	    },
	    toString: function () {
	            console.log("toString");
	            return {}; 
	    }
	};

	Number(obj);

结果:
valueOftest.jsp:15
toStringtest.jsp:19
  1. Uncaught TypeError: Cannot convert object to primitive valuetest.jsp:24

String()函数,强制转化成字符串

如果要将对象转为字符串,则是采用以下步骤。

  1. 先调用toString方法,如果toString方法返回的是原始类型的值,则对该值使用String方法,不再进行以下步骤。

  2. 如果toString方法返回的是复合类型的值,再调用valueOf方法,如果valueOf方法返回的是原始类型的值,则对该值使用String方法,不再进行以下步骤。

  3. 如果valueOf方法返回的是复合类型的值,则报错。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值