1、let命令
<script> //let关键字就是用来声明变量的 //使用let关键字声明的变量具有块级作用域 //在一个大括号中 使用let关键字声明的变量才具有块级作用域,var关键字不具备这个特点 /* if (true) { let a = 10; } console.log(a);*/ //a is not defined //防止循环变量变成全局变量 console.log('-------------防止循环变量变成全局变量-----------------'); for (var i = 0; i < 2; i++) {} console.log(i); /* for (let j=0;j<2;j++){} console.log(j); */ // console.log('-------------let声明不存在变量提升-------------'); //let声明的变量不存在变量提升 console.log(c); var c = 10; /* console.log(b); let b=10; */ //使用let关键字声明的变量具有暂时性死区的特性 var temp = 100 if (true) { console.log(temp); let temp = 200; }</script>
2、const命令
<script> //const用来声明一个常量的 //const声明必须赋初始值 /* if(true){ const a=10 } console.log(a); */ //a is not defined</script><script> /* const b=10; b=100; console.log(b); */ let c = 10; c = 100; console.log(c); const arr = [1, 2]; arr[0] = 100; //引用类型可以改变值或者添加属性 console.log(arr); arr = [100, 200] //引用类型重新赋值会报错 console.log(arr);</script>
3、let、const和var的区别
// demo5var 关键字的特点: - 变量(预解析)提升,可以在声明的前面使用 - 同一作用域内可以多次声明同一个变量(即便这种方式不建议这样去写) - 能让它形成作用域的只有函数let:声明变量的关键字 - 没有变量提升,只能在声明之后使用 - 同一作用域内只能声明一次 - 你声明的变量的作用域仅限于最近的花括号内( {} )const:只能用来声明常量,该常量一旦声明其值就不能改变( 与let的唯一区别 ) - 没有变量提升,只能在声明之后使用 - 同一作用域内只能声明一次 - 你声明的变量的作用域仅限于最近的花括号内( {} ) - 用const声明的变量: 不允许重新赋值,引用数据类型可以添加或修改属性