<!DOCTYPE HTML>
<html lang = 'en'>
<head>
<meta charset = 'UTF-8'/>
<title>Document1</title>
<style>
</style>
</head>
<body>
<script>
let a = 10;
console.log(a);
//1.let用法类似于var
if(a > 5){
let b = 20;
console.log(b);
}
//console.log(b);
//2.这里输出b报错,因为let声明变量时{}符号相当于一块作用域
//在此作用域中声明的变量,只能在此作用域中才有使用权
//所以将console.log(b)写到{}内可完成打印
function foo(){
let c = 50;
console.log(c);
}
foo();
//console.log(c);
//3.延展 这样也是报错,同样将console.log(c)写到{}内可完成打印
console.log(aa);
var aa = 10;
//console.log(bb);
let bb = 20;
//4.结果aa为undefined,bb报错;这是因为var存在声明提升,预编译环节
//aa最开始为undefined再执行var aa = 10; aa为10而console.log(aa)在
//var aa = 10;之前所以输出undefined,而let不存在声明提升;所以没有undefined
//这个初始值所以console.log(bb)在let bb = 20;这条语句之前打印报错,所以注释掉
//let bb = 30;
//5.延展 这种let重复声明会报错,他不会想var声明一样存在可以重复声明,后面一个
//声明覆盖前面一个声明,还有你要弄清楚let声明和赋值是不一样,声明只能有一个
//赋值可以有多个
const aaa = 10;
//aaa = 20;
//6.const声明的是常量,不能重新修改他的值,并且他具有let的各种语法
//比如块作用域,不会声明提升,不能重复声明
</script>
</body>
</html>
ES6中let的块作用域,声明提升等结合代码解释,以及const的使用
猜你喜欢
转载自blog.csdn.net/weixin_48727085/article/details/108272375
今日推荐
周排行