当前位置: 移动技术网 > IT编程>开发语言>JavaScript > 作用域

作用域

2018年05月05日  | 移动技术网IT编程  | 我要评论

Javascript作用域


概念

  • 在 JavaScript 中, 作用域为可访问变量(包含对象和函数)的集合。
  • 通俗讲,作用域就是起作用的范围。
  • 在 JavaScript 中,函数是唯一拥有自身作用域的代码块。

在 JavaScrip 中有全局作用域和局部作用域

全局作用域

  • 变量在函数外声明,即为全局变量,拥有全局作用域。
  • 整个页面起作用,在<script>内都能访问到,可以在任何地方使用。
  • 在全局作用域中有全局对象window,代表一个浏览器窗口,由浏览器创建,可以直接调用。
  • 全局作用域中声明的变量和函数,会作为window对象的属性和方法保存。
  • 全局变量在页面打开时创建,这个作用域会一直存在,直到页面关闭后才销毁。

局部作用域

  • 变量在函数内声明,即为局部变量,拥有局部作用域。
  • 局部作用域内的变量只能在函数内部使用,所以也叫函数作用域。
  • 局部作用域就是在全局作用域的里面又开辟出一个相对小的作用域。
  • 每一个函数,都是一个局部作用域。
  • 在 js 中只有函数能生成一个局部作用域。
  • 局部变量在函数开始执行时创建,函数执行完后局部变量会自动销毁。

案例1

<script>
    var a = 123; //全局变量
    function fn() {
        console.log(a); //123
    }
    fn();
    console.log(a); //123
</script>

案例2

<script>
    var a = 123; //全局变量
    function fn() {
        var b = 456; //局部变量
        console.log(b); //456
        console.log(a); //123(函数内部可访问全局变量)
    }
    fn();
    console.log(b); //b is not defined(无法访问函数内部变量)
    console.log(a); //123
</script>

 在 javascript 中变量的使用规则:

  • 可以直接给一个未声明的变量赋值(自动定义为全局变量),但不能直接使用未声明的变量,直接使用会报错。
  • 因为局部变量只作用于函数内,所以不同的函数可以使用相同名称的变量。
  • 当全局与局部有同名变量的时候,访问该变量将遵循 "就近原则"(优先使用局部变量)。

 

在 javascript 中显示声明与隐式声明的区别:

  • 显式声明:有 var 关键字声明,作用域按正常情况,在全局声明就是全局变量,在局部声明就是局部变量。
  • 隐式声明:没有 var 关键字声明,在全局和局部直接赋值,都是全局变量。

案例

<script>
    fn( );
    console.log(c); //9
    console.log(b); //9
    console.log(a); //a is not defined(没有声明变量,直接使用就报错)
    function fn(){
        var a=b=c=9;
         //c = 9; (隐式声明,自动定义为全局变量)
         //b = c; (隐式声明,自动定义为全局变量)
         //var a = b; (显式声明,局部变量)
        console.log(a); //9
        console.log(b); //9
        console.log(c); //9
    }
</script>

 

 

 

 

本文地址:https://blog.csdn.net/Lucky_hanmei/article/details/107284378

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网