标签:
1.js没有块级作用域,只有函数级作用域,函数外面的变量函数里面可以找到,函数里面的变量外面找不到。
2.
  var t = "bb"; 
			  function test() { 
			    //执行t的时候,它会先找作用域链对象,由于它定义在函数内部,所以这个函数就是它的作用域链的第一个对象 
			    //而在这个对象里又有t的定义,所以t就是局部变量了,它替换了全局变量t
			    //t只是此时有定义,但并没有赋值,赋值在下一行,所以这里输出了undefined 
				    alert(t); 
				    var t = "aa"; 
				    alert(t); 
			  } 
			  test();  //结果为undefined/bb,编译时局部变量替换全局变量,输出前没有赋值,所以第一个弹出undefined(预解析)。
3.
    function aaa() {
          var a=b=0;
    }
    aaa();
    console.log(a);	//a没有定义,在函数中为局部变量
    console.log(b); //0,相当于全局变量
4.当参数跟局部变量重名时,优先级是等同的。
  var a = 10;
		    function aaa(a) {
			    alert(a);
			    var a = 20;
		  }
aaa(a); //结果为10
5.
var arr = [];
arr[0] = "a";
		  arr[1] = "b";
		  arr.foo = "c";
		  console.log(arr.length); //结果为2,foo为对象
6.所有属于全局作用域的变量都是window对象的属性.
标签:
原文地址:http://www.cnblogs.com/susantong/p/5917892.html