1.变量
a.基础变量:
string number boolean undefind null
b.引用变量:
object array date RegExp map set symbol
2.作用域
全局变量在整个程序中都能使用
局部变量仅能在当前的方法function()中使用
3.内存
内存分为堆和栈,栈一般用于存储基础数据类型,var 定义的东西。栈是有序的。
堆一般用于存放引用类型,以及function 它数无序的。
4.变量复制
如上图所示,对于基础数据类型而言
var a = 1;
var b =3 ;
b = a
console.log(a,b)
打印出的a和b的值都为1
对于引用类型而言:
var obj = {
name:'guozhitao',
age: 18,
exp: 'shuai'
}
var obj2 = obj
obj2.num = 123
console.log(obj,obj2)
其结果为:
在给obj2 添加内容时,obj也在添加,两者为同一个。可参考上图
对于function而言:
var a = 1;
var b =3 ;
var obj = {
name:'guozhitao',
age: 18,
exp: 'shuai'
}
var obj2 = obj
obj2.num = 123
function fn(c){
c=2
console.log(c,a)
}
fn(a)
function fn2(obj){
obj.stu = 'verygood'
console.log(obj,obj2)
}
fn2(obj2)
结果如下
个人理解function传参过程与“=”类似
5.内存溢出,内存泄漏
内存溢出:死循环…
内存泄漏:没有被指向的,却存在的,无用的内存