let
/* let a = 0;//和var基本相似 console.log(a); */ let a = 0; var b = 10;//当上方有声明相同变量时(包含let)就会直接报错 /* var : 1.var 可以重复声明 let: 1.同一作用域下不能重复声明 */
let的块级作用域
if(true){ let a = 1; } console.log(a);//报错!!~ { //只要是大括号就是一个代码块 //let在代码块之间,只能在代码块之中进行使用 } console.log(a);//->1; let->报错未定义 /* var : 1.var 可以重复声明 2.作用域: 全局作用域 和 函数作用域 let: 1.同一作用域下不能重复声明 2.作用域: 全局作用域 和 块级作用域{} */
let 和 var的区别
//JS是有域解析机制的! -> var 定义一个在上面进行调用的时候,并不会报错,而是出现一个undefined; console.log(a);//var->undefined let->报错 let a = 1; /* var : 1.var 可以重复声明 2.作用域: 全局作用域 和 函数作用域 3.会进行域解析 let: 1.同一作用域下不能重复声明 2.作用域: 全局作用域 和 块级作用域{} 3.不进行域解析 */
const 常量
/* const : 常量 申明的时候必须赋值,赋值了之后不能修改 1.同一作用域下不能重复声明 2.块级作用域 3.不能域解析 基本和let一样 */ // const a = 10;//const只能在申明的时候赋值,后面是不允许修改的! const a = undefined; // a = 20;//不能修改! console.log(a);//10
手册地址:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/let