美文网首页
JS基础——作用域

JS基础——作用域

作者: 知名大学士 | 来源:发表于2020-02-28 21:44 被阅读0次

什么是作用域?

什么是作用域,就是一个变量可以生效的范围。
变量不是在所有地方都可以使用的,而这个变量的使用范围就是作用域。

变量的作用域可以分为两种:全局变量和局部变量。

全局作用域

全局作用域是最大的作用域,在全局作用域中定义的变量可以在本页面任何地方使用。
在页面打开的时候,浏览器会自动给我们生成一个全局作用域window,这个作用域会一直存在,直到页面关闭。

<script>
    var outerVar = "outer";
    function fn(){
        console.log(outerVar);
    }
    fn();//result:outer
</script>

如以上代码所示,我们在fn()函数里能够打印出变量outerVar的值,因为outterVar是一个全局变量,作用域是全局作用域。

局部作用域

局部作用域就是在全局作用域下面有开辟出来的一个相对小一些的作用域;在局部作用域中定义的变量只能在这个局部作用域内部使用,不能再这个局部作用域之外的地方使用;
在 JS 中只有函数能生成一个局部作用域,别的都不行,也就是局部变量只能定义在函数的{}中;每一个函数,都可以说是一个局部作用域。

<script>
      function fn(){
         var innerVar = "inner";
      }
      fn();
      console.log(innerVar);// ReferenceError: innerVar is not defined
</script>

如以上代码所示,我们在fn()函数里定义变量innerVar,当我们在fn()外部打印innerVar时会报错:ReferenceError: innerVar is not definedinnerVar未定义,因为innerVar是一个局部变量,它的作用域是fn(){}内部,所以当我们在fn()以外打印它时是在它的作用域以外,故报错。

需要注意的是,函数内部声明变量的时候,一定要使用var命令。如果不用的话,你实际上声明了一个全局变量!
<script>
      function fn(){
         innerVar = "inner";
      }
      fn();
      console.log(innerVar);// result:inner
</script>

相关文章

  • 变量作用域

    变量作用域:静态作用域、动态作用域JS变量作用域:JS使用静态作用域JS没有块级作用域(全局作用域、函数作用域等)...

  • JS作用域的练习

    Js作用域练习demo1 Js作用域练习demo2 JS作用域练习demo3 JS作用域练习demo4 JS作用域...

  • 闭包

    一、理解闭包前js基础1、作用域链(作用域、作用域链中有说)。2、js的内存回收机制。一个函数在执行开始的时候,会...

  • 你不知道的JS-上卷

    作用域整体理解:JS作用域分为函数作用域,全局作用域,with和try catch形成的块级作用域。 JS引擎在编...

  • js 闭包

    一、js 作用域 讲闭包首先就要理解 js 的作用域。再 ES5 中,js 有两种作用域,全局作用域和函数作用域(...

  • JS基础:作用域

    一、作用域概念-预解析规则、表达式 作用域: 域:空间,范围,区域……作用:读,写 浏览器——JS解析器: 在浏览...

  • JS基础——作用域

    什么是作用域? 什么是作用域,就是一个变量可以生效的范围。变量不是在所有地方都可以使用的,而这个变量的使用范围就是...

  • 2019-08-13JS里面的作用域Scope

    作用域指一个变量的作用范围。 JS的作用域 在JS中,有两种作用域 全局作用域直接编写在script标签中 JS代...

  • 干货!月薪80k前端大佬面试笔记:JS闭包解析!

    三点注意事项 JS没有块级作用域,只有全局作用域和局部作用域(函数作用域)。 JS中的作用域链,内部的作用域可以访...

  • JavaScript作用域的理解

    作用域:就是起作用的区域。JS的作用域规定了变量和函数可访问的范围。JS作用域分为:全局作用域和局部作用域 全局作...

网友评论

      本文标题:JS基础——作用域

      本文链接:https://www.haomeiwen.com/subject/ungrhhtx.html