1、外层的变量,内层可以找到(全局)
b += 3;
alert(b); // 8
alert(a); // 5
b = [1, 2, 3, 4]; // 与a 不是公用一个地址,而是自己新创建的
b.push(4);
alert(a); // [1, 2, 3]
alert(b); // [1, 2, 3, 4]
内层的变量,外层找不到(局部)
2、当 var 不加的时候,会自动生成全局变量(不建议这样写,最好把所有要定义的变量加上var)
3、变量的查找是就近原则去寻找,var 定义的变量,当就近未找到,就会查找外层,一层一层往外找。
4、当参数与局部变量同名时,优先级是等同的。
5、基本类型的赋值只是值得赋值,而不是引用关系
而对象之间存在引用关系(在内部中的地址是一样的)
基本类型:
var a = 5;
var b = a;b += 3;
alert(b); // 8
alert(a); // 5
对象类型:
var a = [1, 2, 3];
var b = a;
b.push(4);
alert(a); // [1, 2, 3, 4]
alert(b); // [1, 2, 3, 4]
var b = a;
b.push(4);
alert(a); // [1, 2, 3, 4]
alert(b); // [1, 2, 3, 4]
var a = [1, 2, 3];
var b = a;b = [1, 2, 3, 4]; // 与a 不是公用一个地址,而是自己新创建的
b.push(4);
alert(a); // [1, 2, 3]
alert(b); // [1, 2, 3, 4]