饥人谷技术博客

数据类型转换

2019-05-18  本文已影响8人  Mr_LvHeng

其他类型转字符串类型

其他类型转布尔类型

Boolean(1)
true
Boolean(2)
true
Boolean(0)
false
Boolean('')
false
Boolean(' ')
true
Boolean('嘤嘤嘤')
true
Boolean(null)
false
Boolean(undefined)
false

Boolean({})
true
Boolean({name : 'name'})
true

简便写法:

!! true
true
!! 1
true
!! 0
false
... //与上面的方法结果相同

五个特殊值

详细了解,搜索:MDN Falsy

转number类型

  1. Number('1') === 1

  2. 全局函数 (parse 解析):

    • 转整数:parseInt('1', 10) === 1 第一个变量是要转换的字符串,第二个变量是转换后的数字类型,比如当前是十进制
    • 转小数:parseFloat('1.25') === 1.25
    • '1'.
  3. 简洁的写法

    "1" - 0
    1
    "10" - 0
    10
    "1.25" - 0
    1.25
    
    + "1"
    1
    + "10"
    10
    + "1.25"
    1.25
    + "-1"
    -1
    

案例

循环a.self.self....

正确写法:

var a = {}
a.self = a
a.self.self.self
{self : {...}}

错误写法:

var a = {self : a}
{self : undefined} //由于 a 在 var 时对象 a 中的 a 还不存在,所以 self 的值会变为 undefined

引用类型面试题

var a = {n:1}
var b = a
a.x = a = {n:2} //此处会先确定a的值是什么,再进行赋值运算

alert(a.x) // undefined
alert(b.x) // [object Object]

GC 垃圾回收 (一个页面被使用后,浏览器回收的那个 页面的内存)

深拷贝 浅拷贝

深拷贝

对于所有的基本类型,简单的赋值,就是深拷贝

var a = 1
var b = a
b = 2
// a = 1 ,b 的更改并没有影响 a,这就叫做深拷贝

浅拷贝

对象类型

var a = {
    name : 'x'
}
var b = a
b.name = 'y'
// 此时 a.name 也是 ‘y’

对象也可以实现深拷贝

上一篇 下一篇

猜你喜欢

热点阅读