• JS作用域


    作用域是可访问的变量的集合。在JavaScript中,作用域为可访问变量,对象,函数的集合,它分为局部作用域和全局作用域。作用域决定了这些变量的可访问性(可见性)。

    1. 全局作用域(Global Scope)
            在代码中任何地方都能访问到的对象拥有全局作用域,一般来说以下几种情形拥有全局作用域:
    (1)最外层函数和在最外层函数外面定义的变量拥有全局作用域.

    1. var outValue = "最外层变量"; //最外层变量
    2. function outFun() { //最外层函数
    3.     var inValue = "内层变量";
    4.     function innerFun() { //内层函数
    5.         console.log(inValue );
    6.     }
    7.     innerFun();
    8. }
    9. console.log(outValue ); //最外层变量
    10. outFun(); //最外层函数
    11. console.log(inValue );  //inValue is not defined  内层变量是局部作用域,函数以外访问不到他
    12. innerFun();   //innerFun is not defined  内层函数是局部作用域,函数以外访问不到他

    (2)所有末定义直接赋值的变量自动声明为拥有全局作用域

    1. function outFun2() {
    2.     value1= "未定义直接赋值的变量";
    3.     var value2= "内层变量2";
    4. }
    5. outFun2();//要先执行这个函数,
    6. console.log(value1); //未定义直接赋值的变量
    7. console.log(value2); //value2not defined  内层变量2是局部作用域,函数以外访问不到他

    注意点:如果在函数中定义变量时,如果不添加var关键字, 这个变量是一个全局变量 

    (3)所有window对象的属性拥有全局作用域

    2. 局部作用域(Local Scope) 
            和全局作用域相反,局部作用域一般只在固定的代码片段内可访问到,最常见的例如函数内部,所有在一些地方也会看到有人把这种作用域称为函数作用域

    3. 块级作用域
            ES6 之前 JavaScript 没有块级作用域,只有全局作用域和函数作用域。ES6 的到来,为我们提供了‘块级作用域’,可通过新增命令 let 和 const 来体现。
            块级作用域所声明的变量在指定块的作用域外无法被访问。块级作用域在如下情况被创建:
    在一个函数内部,在一个代码块(由一对花括号包裹)内部

  • 相关阅读:
    Kaldi 入门使用教程
    【数据结构】—— 哈希表/STL使用技巧
    关于安卓jsbridge的使用
    【day6】类与对象、封装、构造方法
    财务数字化转型是什么?_光点科技
    深入讲解C++基础知识(一)
    前端培训技术AngularJS 服务(Service)
    2023最新SSM计算机毕业设计选题大全(附源码+LW)之java房屋租赁管理系统d97n3
    Groovy闭包与数组遍历
    使用正交表设计测试用例
  • 原文地址:https://blog.csdn.net/qq_26942049/article/details/126295287