块级作用域-let和var

JS中使用var来声明
1、变量作用域:变量在什么范围内是可用的
2、没有块级作用域引起的问题
3、变量提升

<body>
	<button>按钮1</button>
	<button>按钮2</button>
	<button>按钮3</button>
	<button>按钮4</button>
	<button>按钮5</button>
<script type="text/javascript" src="./js/vue.js"></script>
<script type="text/javascript">
	//变量提升
	var a = 99;// 全局变量a
	func();// f是函数,虽然定义在调用的后面,但是函数声明会提升到作用域的顶部。 
	console.log(a);// a=>99,  此时是全局变量的a
	function func() {
	  console.log(a);// 当前的a变量是下面变量a声明提升后,默认值undefined
	  var a = 10;
	  console.log(a);      // a => 10
	}
	//没有块级作用域引起的问题
	var btns = document.getElementsByTagName('button');
	for(var i = 0;i<btns.length;i++){
		btns[i].addEventListener('click',function(){
			console.log('点击了第'+i+'个按钮');
		});//点击任意一个按钮,打印都是“点击了第5个按钮”
		//用闭包解决这个问题,因为函数有作用域
		(function(j){
			btns[i].addEventListener('click',function(){
				console.log('点击了第'+j+'个按钮');
			});
		})(i);
	}	
</script>
</body>

ES6 let中加入了if和for的块级作用域

<body>
	<button>按钮1</button>
	<button>按钮2</button>
	<button>按钮3</button>
	<button>按钮4</button>
	<button>按钮5</button>
<script type="text/javascript" src="./js/vue.js"></script>
<script type="text/javascript">
	const btns = document.getElementsByTagName('button');
	for(let i = 0;i<btns.length;i++){
		btns[i].addEventListener('click',function(){
			console.log('点击了第'+i+'个按钮');
		});//点击任意一个按钮,打印都是“点击了第5个按钮”
	}	
</script>
</body>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值