华为ICT培训-高端面授华为ICT培训机构
云和教育:云和数据集团高端IT职业教育品牌
  • 华为
    授权培训中心
  • 腾讯云
    一级认证培训中心
  • 百度营销大学
    豫陕深授权运营中心
  • Oracle甲骨文
    OAEP中心
  • Microsoft Azure
    微软云合作伙伴
  • Unity公司
    战略合作伙伴
  • 普华基础软件
    战略合作伙伴
  • 新开普(股票代码300248)
    旗下丹诚开普投资
  • 中国互联网百强企业锐之旗
    旗下锐旗资本投资

什么是作用域?JavaScript作用域有哪些?

  • 发布时间:
    2023-02-22
  • 版权所有:
    云和教育
  • 分享:

通常来说,一段代码中所用到的名字(如变量名)并不总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。作用域机制可以有效减少命名冲突的情况发生。本节将对作用域进行详细讲解。

作用域的分类

通过前面的学习,我们知道变量需要先声明后使用,但这并不意味着声明变量后就可以在任意位置使用该变量。例如,在函数中声明一个age变量,在函数外进行访问,就会出现age变量未定义的错误,示例代码如下。

function info() {
    var age = 18;
}
info();
console.log(age); //报错,提示age is not defined(age未定义)

从上述代码可以看出,变量需要在它的作用范围内才可以被使用,这个作用范围称为变量的作用域。JavaScript根据作用域使用范围的不同,将其划分为全局作用域、函数作用域和块级作用域(ES6提供的)。上述示例声明的age变量只能在info0函数体内才可以使用。

作用域的使用提高了程序逻辑的局部性,增强了程序的可靠性,减少了名字冲突。

全局作用域

作用于所有代码执行的环境(整个 script 标签内部)或者一个独立的 js 文件处于全局作用域内的变量,称为全局变量

局部作用域

作用于函数内的代码环境,就是局部作用域。 因为跟函数有关系,所以也称为函数作用域。处于局部作用域内的变量称为局部变量如果函数内部,变量没有声明,直接赋值,也当全局变量看,但是强烈不推荐但是有一种情况,函数内部的形参可以看做是局部变量。