JS的类型转换

2019-01-09  本文已影响0人  雷神的铁粉

String()

使用String函数,可以将任意类型的值转化成字符串。

数值:转为相应的字符串。
字符串:转换后还是原来的值。
布尔值:true转为"true",false转为"false"。
undefined:转为"undefined"。
null:转为"null"。

String(123) // "123"
String('abc') // "abc"
String(true) // "true"
String(undefined) // "undefined"
String(null) // "null"

toString,可以改变转换成字符串时的返回值
toString可以用来转number和boolean,null和undefined就报错,object转化为''[object Object]''
转化为字符串的方式:

  • String()
  • .toString
  • 与 ' ' 相加,
null + ' '==='null'
undefined + ' ' ==='undefined'

Boolean()

使用Boolean函数,可以将任意类型的变量转为布尔值。
除了这六个值(五个falsy值和false)被转为false,其他值都视为true。

undefined , null , false , 0 , NaN , 空字符串''

Boolean(undefined) // false
Boolean(null) // false
Boolean(0) // false
Boolean(NaN) // false
Boolean('') // false
Boolean({}) // true
Boolean([]) // true
Boolean(new Boolean(false)) // true

转化布尔值的方式:

!!  {}  //true
!!   null //false

ToString

ToString 主要负责处理非字符串类型转换为字符串类型。我们将待转换的类型进行划分:
基本类型和对象类型

string 类型是 JS 中很特殊,也是最重要的基本类型,基本每个内置对象都实现了自身的 toString 方法。

基本类型值的操作很常规,都遵循着通用的规则。

null -> 'null'
undefined -> 'undefined'
true -> 'true'
21 -> '21'

将数字转换为字符串

全局方法 String() 可以将数字转换为字符串。
该方法可用于任何类型的数字,字母,变量,表达式:

String(x) // 将变量 x 转换为字符串并返回`

String(123) // 将数字 123 转换为字符串并返回`

String(100 + 23) // 将数字表达式转换为字符串并返回`

Number 方法 toString() 也是有同样的效果。

x.toString()

(123).toString()

(100 + 23).toString()

将布尔值转换为字符串

全局方法 String() 可以将布尔值转换为字符串。

String(false) // 返回 "false"

String(true) // 返回 "true"

Boolean 方法 toString() 也有相同的效果。

false.toString() // 返回 "false"

true.toString() // 返回 "true"

任意类型转数字

1.  Number(x)
2.  parseInt(x, 10) 
3.  parseFloat(x) 
4.  x - 0
5.  +x

深复制是什么?

var a = 1
var b = a
b = 2 //这个时候改变 b
a 完全不受 b 的影响
那么我们就说这是一个深复制

对于简单类型的数据来说,赋值就是深拷贝。
对于复杂类型的数据(对象)来说,才要区分浅拷贝和深拷贝。

这是一个浅拷贝的例子

var a = {name: 'frank'}
var b = a
b.name = 'b'
a.name === 'b' // true
因为我们对 b 操作后,a 也变了

什么是深拷贝了,就是对 Heap 内存进行完全的拷贝。

var a = {name: 'frank'}
var b = deepClone(a) // deepClone 还不知道怎么实现
b.name = 'b'
a.name === 'a' // true
上一篇下一篇

猜你喜欢

热点阅读