一、var变量
var在全局作用域的应用,使用var关键字声明的变量,都会被提升到该作用域的最顶部,这就是我们常说的变量提升(使用在前,声明在后不报错,会自动提升变量到作用域最顶部,默认先声明)。具有以下特点:
1.全局变量:在函数外声明的变量作用域是全局的。
2.局部变量:在函数内声明的变量作用域是局部的(函数内):
3.使用 var 关键字在块级作用域存在的问题。
var a = 10;
console.log(a); //10
{
a = 2;
console.log(a); //2
}
console.log(a); //2
4.重置变量:使用 var 关键字声明的变量在任何地方都可以修改:
二、块级作用域let,const
let、const声明和var声明用法一样,不同点在于let、var声明的是变量,const声明的是常量。var存在变量提升,let、const不存在变量提升。var在全局作用域声明的变量会挂载在window对象上
1.let声明:let声明的是变量,没有var那样的变量提升,let声明的变量只在当前作用域中有效,在相同的作用域或块级作用域中,不能let关键字来重置 var 关键字声明。let 关键字在不同作用域,可以重新申明和赋值
2.const声明:const声明的是常量,常量不可以修改。常量定义必须初始化值,如果不初始化值就会报错。对象和数组,对于引用类型(对象和数组),const 保证的是变量引用的地址不变,但对象或数组本身是可以修改的。
三、总结
let、var声明的是变量,const声明的是常量。var存在变量提升,let、const不存在变量提升。var在全局作用域声明的变量会挂载在window对象上,而let const声明的变量则不会有这一行为。let声明的是变量,没有var那样的变量提升,let声明的变量只在当前作用域中有效,const声明的是常量,常量不可以修改。常量定义必须初始化值,如果不初始化值就会报错。
浙公网安备 33010602011771号