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
转化布尔值的方式:
- boolean()
- 前面加 !!
!! {} //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