前言
JS作用域也是JS的重点知识,今天来复习一下面试的重点
一、什么是作用域?
作用域是可访问变量的集合。作用域分为全局作用域、函数作用域以及es6新增的块级作用域。
二、作用域
2.1全局作用域
定义在函数外的变量,即为全局变量,函数内未声明的变量也为全局变量。全局变量有全局作用域,window对象中的属性拥有全局作用域也可以在当前脚本任意位置被访问。
var obj = {};//全局变量
function get() {
newObj = { name: 'zhangsan' }; //未声明 为全局变量
console.log(obj);
}
get();
2.2函数作用域
作用于函数内的代码环境即为函数作用域,函数内的变量为局部变量,只能在函数内部被访问。
var a = 10;
function get() {
var a = 1;
console.log(a);//读取函数内变量1
}
get();
console.log(a);//读取全局变量10 访问不到函数内变量
2.3块级作用域
es6中新增了const来声明常量以及let来声明变量,他们的共同点就是可以形成一个块级作用域,一个{]就是一个作用域,在其外面是访问不到他们所声明的常量/变量。
if (true) {
let a = 1;
const b = 2;
console.log(a);//输出1
console.log(b);//输出2
}
console.log(a);//报错 提示找不到名称a
console.log(b);//报错 提示找不到名称b