作用域

71 阅读1分钟

1、JS作用域

  1. 定义: 变量在某个范围内起作用的效果
  2. 目的: 为了提高程序的可靠性,更要的是减少命名冲突
  3. js的作用域(es6)之前: 全局作用域 局部作用域
  4. 全局作用域: 整个script标签 或 单独js文件
  5. 局部作用域(函数作用域): 在函数内部就是局部作用域, 也就是说变量只在函数内部起效果和作用
  6. ES6新增块级作用域
function fn() {
  //局部作用域
} 

2、变量的作用域

  1. 全局变量: 在全作用域下的变量,在全局都可以使用

注意: 如果在函数内部,没有声明,并直接赋值的变量,也是全局变量

var num = 10
console.log(num);//10

num就是一个全局变量

  1. 局部变量: 在函数中的变量,就是局部变量
function fn(aru) {
    var num1 = 10
    
}

are也可以是看作是一个局部变量

  1. 变量-->全局作用域和局部作用域的执行效率

    全局变量,只有浏览器关闭的时候才会销毁 ,比较占用内存资源 局部变量,当程序执行完毕就会销毁,比较节约内存资源

3、作用域链

  1. 定义: 根据内部函数可以访问外部函数的执行机制,用链式查找,决定哪些数据可以被内部函数访问,称之为作用域链
var num = 10;
function fn() {//外部函数
    var num = 20;
    function fun () {//内部函数
        console.log(num);
        //打印 20
    }
}

注意: 就近原则