变量与作用域

1、外层的变量,内层可以找到(全局)
     内层的变量,外层找不到(局部)
 
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 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]