类型转换
toString()
var a = 1;
var b = true;
var c = {};
var d = null;
var e = undefined;
a.toString() // "1"
b.toString() // "true"
c.toString() // "[object Object]"
d.toString() // 报错
e.toString() // 报错
//老司机怎么把不同类型变成字符串的
a + '' // "1"
b + '' // "true"
c + '' // "[object Object]"
d + '' // "null"
e + '' // "undefined"
//智障写法 不同类型是不能 + 的
// + 如果发现左右任意一边有字符串 就会把另一边转为字符串
1 + '1' // 字符 "11" 相当于 (1).toString() + '1'
1 + 1 // 数字 2
//变成字符串常用的方法是 与空字符串相加 ‘’+
//除此之外 你可以 window.String(一个变量) 与 ‘’+ 一样
Boolean()方法
Boolean(1) // true
Boolean(2) // true
Boolean(0) // false
Boolean('') // false
Boolean(' ') // true
Boolean('21321') // true
Boolean({a:11,b:22}) // true
Boolean({}) // true
//老司机
!! true //true
!! 1 // true
!! 0 // false
!! '' // false
!! ' ' //true
!! {} //true
!! null // false
!! undefined //false
类型转换
5个特殊值 Falsy
number | string | boolean | symbol | null | undefined | object |
---|---|---|---|---|---|---|
0 NaN | '' | null | undefined |
转为number类型
5种方式如图
类型转换
考点
parseInt('011') // 11
parseInt('011',8) // 9
parseInt('011',10) // 11
parseInt('s') // NaN
parseInt('1s') // 1
内存图
内存分为代码区和数据区 chrome为程序划分100M内存
数据区
栈 && 堆 数据区
简单示例 内存分配过程引用 复杂类型存的是引用
示例
测试1
- 测试2
测试3
测试3self 指向自己
很贱很贱的面试题
面试题
垃圾回收
GC 如果一个变量没有被引用==>它就是垃圾 ==> 将被回收
var a = {name : 'a'} // 分配内存地址 33
var b = {name : 'b'} // 分配内存地址 60
a = b // a 的内存地址 = b 的内存地址 ==> 60
// a原来的地址 33所占用的内存空间 就是 垃圾
深拷贝 && 浅拷贝
var a = 1;
var b = a;
b = 2 ;// b变 a 不变 就是深拷贝(基本类型的赋值都是深拷贝)
要考虑的是 复杂类型 的深拷贝
var a ={ name :'a'}
var b = a ;
b.name = 'b'; //这导致 a.name也变了 (浅拷贝)
复杂类型深拷贝的概念(这里没有实现)
面试题
网友评论