js作用域以及变量提升
一、作用域 定义 作用域,即产生作用的特定区域。 javaScript的作用域,即js的变量或者函数产生作用的对应区域。也就是说区域内的可以访问区域外的变量和函数,但是区域外的则不能访问区域内的变量和函数。 分类 在ES5中,作用域分为两种:全局变量和局部变量。 (1)全局变量:所有地方均可访问(在函数外部声明的变量); (2)局部变量:只能在函数内部访问(在函数内部用var关键字声明的变量以及函数的形参)。 在ES6中,新增了块级作用域。 (3)块级作用域:只能在距离最近的大括号的作用范围内访问(仅限于let声明的变量)。 应用 // 全局变量 var i = 0 ; // 定义外部函数 function outer(){ // 访问全局变量 console.log(i); // (1) function inner1(){ console.log(i); // (2) } // inner2中定义局部变量 function inner2(){ console.log(i); // (3) var i = 1; console.log(i); // (4) } inner1(); inner2(); console.log(i); // (5) } outer();//输出结果依次为:0 0 undefined 1 0 注释(1)处:outer()内未声明和定义局部变量i,