作用域

Posted 走在程序的路上

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了作用域相关的知识,希望对你有一定的参考价值。

JS的全局作用域和局部作用域

作用域:变量或者函数可访问的一个范围,以函数划分,一个函数块就是一个作用域

1) 全局作用域,整个文档中都可以使用(变量或者函数在函数外面声明)

声明方法:1 在函数外声明

              2 变量不用var 声明,直接给变量赋值(不推荐使用)

               不管在函数内还是函数外声明都是全局变量

全局变量在任何地方都可以访问的到原因:全局变量是window下的属性,window是一个全局对象,在任何地方都可以使用

注意:尽量避免使用全局变量,声明的时候一定要加var

 1 var a=12;//没在函数内声明,是全局变量
 2 
 3  console.log(a);//12
 4 
 5  function fn(){  //没在函数外声明,全局作用域
 6 
 7           var b=20;//局部作用域,函数块外访问不到
 8 
 9       c=30; //没带var 是一个全局变量
10 
11  }
12 
13  fn();
14 
15 console.log(c); //30  全局变量,不建议使用
16 
17  b=1000;
18 
19 </script>
20 
21 <script type="text/javascript">
22 
23   console.log(a); //12  全局变量
24 
25  console.log(b); //1000
26 
27   fn(); //12  全局函数
28 
29  

 

 

2)   局部作用域,函数范围内声明

变量或者函数在函数内部,作用域仅在声明的这个函数内,在函数外无法访问

注意:1 作用域的查找是函数声明而非调用

2 函数可以嵌套

3嵌套的函数(局部函数)可以访问父函数的内容

 1 function  fn(){
 2          var a=10; //函数内声明  局部变量
 3          var b=20;
 4          // 局部函数
 5          function  fn1(){
 6              console.log(a+b); //30  局部函数可以访问父作用域内的内容
 7          }
 8          fn1();
 9    }
10 
11    fn(); //  30
12    console.log(a); //报错  局部变量 外面访问不

 

以上是关于作用域的主要内容,如果未能解决你的问题,请参考以下文章

JS 作用域及作用域链

作用域是什么?

JavaScript 作用域 与 作用域链

JS---闭包

angularjs作用域之transclude

Python - 模块