1.变量分为基本类型和引用类型。基本类型变量有数字,字符串,布尔值和undefined。引用类型就是对象和函数。
深复制:赋值基本类型。
浅复制:赋值给引用类型。
2.在函数中传参,传的基本类型和引用类型都是传值。传基本类型,在函数内部不会影响外部的值。传引用类型,在函数内部对参数改变会影响到外面的值。
var a = 1;
function getA(a){
a = 2;
}
getA(a);
alert(a); //1
var a = new Object();
a.value = 1;
function getA(a){
a.value = 2;
}
getA(a);
alert(a.value); //2
3.检测类型:
4.typeof只能检测字符串,number,undefined,布尔类型的值。不能检测对象。要知道对象的具体类型,需要使用instanceof。
5.作用域链是保证对当前执行环境可访问的变量和函数的有序访问。作用域链的前端是当前执行环境的变量对象。如果是函数,一开始的变量对象就是函数的参数,也就是arguments对象。作用域链的下一个对象是外部环境的对象变量,一直向外延伸,直到全局作用域。
延长作用域链:with和try-catch块。
6.没有块级作用域:
if(true){
var a=1;
}
alert(a) ; //1
for(var i = 0; i < 10;i++){
}
alert(i); //10
7.没有声明的变量会成为全局变量,声明的变量会成为最接近外层函数的局部作用域。