Javascript 块级作用域

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_37722811/article/details/84435166

1. ES3 块级作用域

ES3的with语句,try__catch语句的catch子句在执行时自动创建一个块级作用域。

 		var obj = {
 			name: "obj";
 		}
 		var name = "global";
 		function test() {
 			var name = "local";
 			/*创建一个块级作用域,对象的属性作为块级作用域Block的属性,内部会有
 			一个对象属性与Block属性的映射关系,保证两边同步修改,但是如果Block中
 			不存在这个变量(对象属性)时,会沿着词法作用域链向上查找,如果找不到,
 			会创建一个暗示全局变量,ES5严格模式已经禁止使用with语句。
 			*/
 			with(obj) {
 				console.log(name);//Block块上的name
 				age = 30 //创建暗示全局变量
 			}
 		}

2. ES6 块级作用域

 使用{}声明一个语句块,并使用let语句劫持这个块,才会创建块级作用域。

猜你喜欢

转载自blog.csdn.net/m0_37722811/article/details/84435166