JS类型转换

JS类型转换面试

这个坑有点深......数组

js的类型转换有两种  :  函数

 

一. 显式类型转换 (大摇大摆转换) : spa

 

其中的方法有 :code

转化为数字对象

 

Number(n) :blog

Number(n) // 结果能是数字的状况: // n是 纯数字, 纯数字字符串, null, 空数组, 一位数组而且是数字或者纯数字字符串, 布尔值
Number(123) 返回123
Number("123") 返回123
Number([]) 返回0
Number([123]) 返回123
Number(['123']) 返回123
Number(null) 返回0
Number(true) 返回1
Number(false) 返回0
// 其余状况会返回NaN

 

 

parseInt(n, index)字符串

     两个参数, n是要转换的值, index是基底, 即进制class

     规则和Number大体同样object

     可是若是是字符串且以数字开头, 好比 '123abc'

     截取前面数字并返回 123

 

 

parseFloat(n) :

     规则和parseInt几乎彻底同样, 可是没有进制参数

  只是若是碰到小数点, 好比 '123.123.123abc'

     她会解析一位小数点 返回 123.123

 

 

转化为字符串 : 

 

toString() :

value.toString() // 若是value是 : //   数字, 返回数字字符串 //   布尔值, 返回布尔值字符串 //   字符串不用说 //   对象, 返回[object Object] //   数组, 返回数组的字符串形式 //   函数, 把完整的函数表达式返回

 

 

String(n) :

参数传递不同, 其余和toString()同样

 

 

转化为布尔值 : 

 

Boolean() : 

转化为false的状况: 空字符串, 数字0, false, undefined, null

其他状况均转化为true

 

 

 

二 .  隐式类型转换 (偷偷摸摸转换, 但仍是调用的显式类型转换的方法) : 

 

isNaN()

调用Number()方法, 而后和NaN比对, 若是是NaN返回true, 不然返回false

 

 

++    --    +    -    

调用Number()方法, 而后进行数字操做

 

 

+

调用String()方法, 而后进行字符串链接操做

 

 

-    /    *    %

调用Number方法, 而后进行数字操做

 

 

&&    ||    !

调用Boolean() 方法

 

 

<    >    <=    >=

字符串和数字比较, 字符串经过Number()方法优先转化为数字

 

 

==    !=

双等号比较和转换规则以下(按照步骤进行):  !   !   !   !  比较重要

1. 先后只要有NaN, 一概返回false
2. 先后若是有布尔就将布尔转化为数字
3. 若是有字符串
  对方是对象: 对象使用toString()
  对方是数字, 字符串转数字
  对方是字符串, 直接比较
  其余返回false
4. 若是是数字, 对方是对象, 对象取valueOf进行比较, 其余一概返回false
5. null 和 undefined 不进行类型转换, 但他们俩相等

隐式类型转换几乎就是为笔试面试准备的, 工做中最好少用

相关文章
相关标签/搜索