ES6中let的块作用域,声明提升等结合代码解释,以及const的使用

<!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>

猜你喜欢

转载自blog.csdn.net/weixin_48727085/article/details/108272375