你不知道的JavaScript(二)

第三章 原生函数

JS有很多原生函数,为基本的数据类型值提供了封装对象,String,Number,Boolean等。我们可以通过{}.call.toString()来查看所有typeof返回object的对象的内置属性[[class]],这个属性无法直接访问。我们基本类型调用的方法和属性都是通过封装对象去访问的,例如var a = “abc”; a.length//3,但是有一点需要注意的是new Boolean(false)//true,为false封装对象时,它是一个真值(即总是返回true),平时在用到封装对象中的基本类型值的时候,JS会发生隐式拆封。

第四章 强制类型转换

强制类型转换是JS里难以掌握的,但是在实际应用中它又是很有用处的,我们十分有必要去深入理解和合理运用它。类型转换有显式和隐式之分,后者就是强制类型转换,例如var a = 42; var b = a + “”;//“42”,这里数字a被转换为了字符串b。

非字符串转换为字符串,在没有自行定义的情况下,普通对象调用toString方法返回内部的[[Class]]值,JSON.Stringfy函数在将对象序列化为字符串时,如果定义了toJSON方法就会首先调用该方法,用返回值进行序列化,在数组中如果遇到undefined,空function,那么会在对应位置返回null以保证单元位置不变。

在将非数字值转换为数字时就会进行ToNumber操作,false转换为0,true转换为1,undefined转换为NaN,null转换为0,对于对象来说,会首先调用valueOf,没有就调用toString来返回基本类型,然后再强制转换为数字值,如果均不返回数字,则会报错。 转换为布尔值时,从逻辑上说,出现在假值列表上的才为假值,+0,-0,infinite,null,undefined,””,NaN等,要特别注意的是这些假值封装的对象是真值(所有对象都是真值),除了””以外的字符串也都是真值。

~这个符号能有奇妙的功能,~X可以视为-(X+1)。通常用+X来把X转换为数字,用X+””来将X转换为字符串,用X|0来将X取整。

对于+运算符,先是调用toString进行字符串拼接,如果不行就用valueOf转换为数字,进行加法操作。

对于比较运算,数字和字符串比较先转化为数字,如果有布尔类型就将布尔类型转换为数字,字符串或数字和对象比较,先把对象用toString,valueOf转换为字符串或者数字。

转载于:https://juejin.im/post/5aa800626fb9a028d375166d

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值