函数的作用域

全局作用域(全局变量):

1.最外层函数和在最外层函数外面定义的变量拥有全局作用域,/函数本身也是一个特殊的变量,其名字就是函数名字;

2.未定义直接赋值的变量自动声明为拥有全局作用域;

3.所有window对象的属性拥有全局作用域,例如:window对象的内置属性都拥有全局作用域,例如window.name、window.location、window.top等;我们也可以通过如下方式定义一个全局变量windowwindow.name=11;

代码执行:先生成一个执行环境,再执行

1.执行环境类似一个表格:第一行放置全局变量,第二行放置局部变量;
2.变量搜索机制:先搜索局部变量,如果没找到,搜索全部变量;
题目:

1  var v = "hello";
2     function test (){
3         console.log(v);
4         var v = "world";
5     }

这行代码的执行结果:undefined;

这段代码说明了两个问题,
第一,function作用域里的变量v遮盖了上层作用域变量v。
第二,在function作用域内,变量v的声明被提升了。所以最初的代码相当于:

1 var v = "hello";
2   function test (){
3    var v; //声明一个变量 声明提升,但是不会被赋值
4       console.log(v);
5      v = "world";
6  }

 

posted @ 2017-12-01 17:42  前端极客  阅读(748)  评论(0编辑  收藏  举报