JavaScript之var、let、const区别
区别:
作用域 | 变量提升 | 重复声明 | 暂时性死区 | 顶层对象属性 | 只读常量 | |
---|---|---|---|---|---|---|
var | 全局/函数作用域 | √ | √ | × | √ | × |
let | 块级作用域 | × | × | √ | × | × |
const | 块级作用域 | × | × | √ | × | √ |
var是ES5声明变量的命令,let、const是ES6新增的声明变量的命令,let与const命令除了声明的变量是否是只读常量外,其他基本一致,所以我们主要讨论var与let的区别,const留在最后讨论
1.作用域
- var在函数外/代码块内声明的变量属于全局作用域的,在函数内声明的变量属于函数作用域的
- let声明的变量属于块级作用域的,只允许代码块内访问
1.1作用域定义:
- Js中的作用域为静态作用域(词法作用域):一块代码区域, 在编码时就确定了, 不会再变化
- 用于隔离变量和查找变量(从内往外找)
- 可分为全局作用域、函数作用域、块级作用域(ES6),注:全局作用域中的变量能被函数作用域和块级作用域访问到,反之不行
1.2区别:
1.2.1区别全局作用域和函数作用域:
var a = 3;
function f(){
var a = 4;
console.log(a) ;
}
console.log