js中的变量都是保存在栈内存中的
基本数据类型的值都是在栈内存中存储 //基本数据类型:String Number boolean null Undefined
值与值之间是独立存在的,修改一个变量不会影响其他变量 //var a=123; var b=a; 如果修改a++;不会影响b的值
//引用类型: object
引用数据类型是保存在堆内存中的,每创建一个新的对象,就会在堆内存中开辟一个新的空间,
而变量保存的是对象的内存地址(对象的引用)如果两个变量保存的是同一个对象引用,当一个通过一个变量修改属性值时,另一个也会受影响。
JS的闭包
<script type="text/javascript">
function fun(){
var a=2;
function fun1(){
a++;
console.log(a);
}
return fun1;
}
var f=fun();
f();
f();
function fn(){
var b=1;
function fn1(){
b++;
console.log(b);
}
function fn2(){
b--;
console.log(b);
}
return {
fn1:fn1,
fn2:fn2
}
}
var c=fn();
c.fn2();
c.fn1();
</script>