声明变量的三大关键字:
var
let
const
三者的区别:
1.var是在ES5中用于声明变量的关键字。var在局部环境中声明的是局部变量,在全局环境中声明的是全局变量(相当于不用var)。
var a = 0; // 相当于 a = 0 ,在全局作用域下声明了一个变量a并赋值0。
function fun(){
var a = 0; // 在fun函数作用域中声明了一个变量a并赋值;在函数外部无法访问,且与函数外部的变量a不为同一个变量,互不干扰。
console.log(a);
}
a = 2; // 修改全局变量a的值
fun(); // 输出0;
2.let是ES6中用于声明变量的关键字。let声明的是局部变量,它所声明的变量只在let命令所在的代码块内有效。
for(let i = 0;i < 10;i++){
console.log(i); // 正常循环输出i值
}
for循环没有独立的作用域,如果括号中用var声明i变量,那么i就是全局变量,而用let声明的是局部变量,在for语句外部无法访问:
for(let i = 0;i < 10;i++){
console.log(i); // 正常循环输出i值
}
console.log(i); // 代码块外部取不到i值
3.const声明的是一个常量,本质为一个内存地址,指向堆内存中的一个对象。
const a = 0; // 用const声明变量a后一定要赋值,且赋值后不能修改。
注意:和let一样,const声明的是局部变量,只在其声明的代码块内有效。