任意类型转字符串
-
String(x)
image.png - x.toString()
var n = null
n.toString()
报错'toString' of null,没有这个api
1+ '1' = (1).toString() + '1' ="11"
-
x+''
x+ ''
任意类型转数字
任意类型转布尔
- Boolean(x)
- !!x
number(0,NaN),string(''),null,undefined,object(全是ture)
关于内存的四个题目
var a = 1
var b = a
b = 2
请问 a 显示是几?
var a = {name: 'a'}
var b = a
b = {name: 'b'}
请问现在 a.name 是多少?
var a = {name: 'a'}
var b = a
b.name = 'b'
请问现在 a.name 是多少?
var a = {name: 'a'}
var b = a
b = null
请问现在 a 是什么?
过程一
过程二
过程三
过程四
一道面试题
image.pngGC 垃圾回收
如果一个对象没有被引用,它就是垃圾,将会被回收
回收垃圾var fn = function(){} //undefined
document.body.onclick = fn//f (){}
fn = null // null
function会被回收吗?no
浅拷贝VS深拷贝
var a = 1
var b = a
b = 2 //这个时候改变 b
a 完全不受 b 的影响
那么我们就说这是一个深复制
b变不影响a就是深拷贝
所有数据基本类型赋值就是深拷贝
对于复杂类型的数据(对象)来说,才要区分浅拷贝和深拷贝。
什么是深拷贝,就是对 Heap 内存进行完全的拷贝。
var a = {
name:'a'}
var b = a
b.name = 'b'
a.name //也是'b'
b变致a变就是浅拷贝
网友评论