let
类似于var,但所声明的变量只在let命令所在的代码块有效。
let不允许重复声明
{
let a=10;
var b=1;
}
console.log(b);//1
console.log(a);//报错
暂时性死区
/*ES6明确规定,如果区块中存在let和const命令,则这个区块对这些命令声明的变量从一开始就形成封闭作用域。
在代码块内,使用let命令声明变量之前,该变量都是不可用的,这个区域被称为“暂时性死区”。*/
var temp=123;
if(true){
temp='abc';
let temp;
}
作用域
全局作用域
在所有函数之外定义的变量拥有全局作用域,该变量为全局变量。
全局变量可以在当前页面中任何JavaScript代码中访问。
函数作用域
在函数中声明的变量(包括函数参数)指定在其所声明的函数内被访问。
块作用域
由{ }界定的代码区域,let声明的变量具备可访问块作用域。
const
基本用法
声明一个只读的常量,一旦声明,其值不能改变且必须立即初始化。
除此之外,与let用法一致。