JS作用域面试题总结
关于JS作用域问题,是面试的时候面试官乐此不疲的面试题,有时候确实是令人抓狂,今天看到一个讲解这个问题的视频,明白了那些所谓的“原理”顿时有种豁然开朗的感觉~~~ 1.js作用域(全局变量,局部变量)内部可以访问外部,但外部的不能访问内部的 var a=10; function aaa(){ alert(a); }; aaa(); //a 为外部变量即全局变量,所以可以直接访问到 结果为10 function aaa(){ var a=10; }; aaa(); alert(a); //a 为函数aaa()内部变量量即局部变量,所以无法访问到 var a=10; function aaa(){ alert(a); }; function bbb(){ var a=20; aaa(); } bbb(); //结果为10,因为aaa()函数不能访问到bbb()里面的局部变量,所以访问到的是a=10,这个全局变量。 2.不用var 定义变量时,会默认为是全局变量(不规范,不推荐) function aaa(){ a=10; } aaa(); alert(a); //结果为10; //等价于: var a; function aaa(){ a=10; }; aaa(); alert(a); //给未声明的变量赋值,此变量就会变成全局变量;var a=b=10; 可以解析成 b=10;var