ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JavaScript---5.作用域

2021-10-27 01:03:06  阅读:102  来源: 互联网

标签:函数 作用域 JavaScript --- window var 声明 变量


  • 作用域

    • 作用域指的是一个变量的作用范围

    • 在JS中一共有两种作用域:
      1.全局作用域
      2.函数作用域

    • 全局作用域

      • 创建的变量都会作为window对象的属性保存

      • 创建的函数都会作为window对象的方法保存

          var a = 10;
          var b = 20;
          console.log(window.a, window.b);
          
          function fun(){
          	console.log("我是fun函数");
          }
          
          window.fun();
          window.alert("hello");
        
    • 函数作用域

      • 调用函数时创建函数作用域 函数执行完毕后 函数作用域销毁

      • 每调用一次函数就会创建一个新的函数作用域 他们之间是相互独立的

      • 在函数作用域中 可以访问到全局作用域的变量
        在全局作用域中无法访问到函数作用域的变量
        注意:如果在函数作用域,没有使用var 直接给一个变量赋值 相当于是 window.a=x 它是全局变量

      • 当在函数作用域操作一个变量时,它会先在自身作用域中寻找,如果有就直接使用,没有在上一级中找
        如果没有想上一级作用域中找,直到找到全局作用域为止。
        如果全局作用域中依然没有找到,则会报错ReferenceError

      • 在函数中要访问全局变量可以使用window 比如window.a

      • 在函数作用域中也有声明提前的特性
        使用var关键字声明的变量 会在函数中所有的代码执行之前被声明
        函数声明也会在函数中所有的代码执行之前执行

      • 在函数中,不使用var声明的变量都会称为全局变量

      • 定义形参就相当于在函数作用域中声明了变量

  • 关于提前声明

    • 变量的提前声明

      • 使用var关键字声明的变量,会在所有的代码执行之前被声明(先声明 后赋值,赋值是在执行到声明所在行时生效)
      • 如果声明变量时不适用var关键字,则变量不会被声明提前
    • 函数的提前声明

      • 使用函数声明形式创建的函数 function fun(){} 它会在所有的大妈执行前就被创建加载 所以可以在函数声明前调用函数
      • 使用函数表达式创建的函数 不会被提前声明 所以不能在声明前调用

标签:函数,作用域,JavaScript,---,window,var,声明,变量
来源: https://www.cnblogs.com/FGdeHB/p/15468667.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有