值类型
即基本数据类型,包括数值类型 number
、布尔类型 boolean
、字符串 string
、null
和undefined
引用类型
即复合数据类型,包括对象 object
、数组 array
和函数 function
浅拷贝和深拷贝
基本数据类型赋值之后,修改是独立的,不会互相影响
var a = 3var b = aa = 4console.log(b) //3
浅拷贝,引用数据类型拷贝的是地址,修改会互相影响
var a = { count: 3 }var b = aa.count = 4console.log(b.count) //4
深拷贝,是用内置JSON对象的strinfy()
和parse()
方法
var a = { count: 3 }var temp = JSON.stringify(a)var b = JSON.parse(temp)a.count = 4console.log(b.count) //3
函数
call()
可接收多个参数、apply()
只能接收数组、bind()
绑定函数,
递归
函数自己调用自己,递归函数必须有一个结束条件
function fn(n) { if (n === 1) return 1 return fn(n - 1) + n} //计算[1, n]的累加和
预解析
在浏览器对JS代码逐条解析前,会先进行预解析:
①提出JS代码中所有的函数
②给所有的全局变量赋值为undefined
(变量提升)