作用域的分类
通过前面的学习,我们知道变量需要先声明后使用,但这并不意味着,声明变量后就可以在任意位置使用该变量。例如,在函数中声明一个age变量,在函数外进行访问,就会出现age变量未定义的错误,示例代码如下。
function info() {
var age = 18;
}
info();
console.log(age); // 报错,提示age is not defined(age未定义)
从上述代码可以看出,变量需要在它的作用范围内才可以被使用,这个作用范围称为变量的作用域。JavaScript根据作用域使用范围的不同,将其划分为全局作用域、函数作用域和块级作用域(ES6提供的)。上述示例声明的age变量只能在info()函数体内才可以使用。
接下来我们针对JavaScript中不同作用域内声明的变量进行介绍。
① 全局变量:不在任何函数内声明的变量(显式定义)或在函数内省略var声明的变量(隐式定义)都称为全局变量,它在同一个页面文件中的所有脚本内都可以使用。
② 局部变量:在函数体内利用var关键字定义的变量称为局部变量,它仅在该函数体内有效。
③ 块级变量:ES 6提供的let关键字声明的变量称为块级变量,仅在“{}”中间有效,如if、for或while语句等。
对于初学者来说,重点是理解全局变量和局部变量的区别,而块级变量和let关键字属于ES 6的新增内容,读者此时仅简单了解即可。