js中的let與var的區別實例

1. 簡單需求

每隔一秒輸出一個數字,javascript

2. 代碼

  1. var 聲明
var i=0;
	while(i<6){
		// 此處聲明爲var
		var index=i;
		setTimeout(function() {
			console.log('當前時間已通過去了'+index+'秒');
		}, 1000*(i++));
	}

輸出結果:java

當前時間已通過去了6秒
當前時間已通過去了6秒
當前時間已通過去了6秒
當前時間已通過去了6秒
當前時間已通過去了6秒
當前時間已通過去了6秒
  1. let 聲明
var i=0;
	while(i<6){
		// 此處聲明爲let
		let index=i+1;
		setTimeout(function() {
			console.log('當前時間已通過去了'+index+'秒');
		}, 1000*(i++));
	}

輸出結果:es6

當前時間已通過去了1秒
當前時間已通過去了2秒
當前時間已通過去了3秒
當前時間已通過去了4秒
當前時間已通過去了5秒
當前時間已通過去了6秒
  1. 引伸(閉包方法)
for(var i=0;i<5;i++){
    (function(i){
        setTimeout(function(){
            console.log(i)
        },1000*i)
    })(i)
}

3 區別

  1. let針對塊級做用域,var爲函數級做用域或全局做用域
  2. 可參考阮一峯老師的ES6入門之let與const命令
相關文章
相關標籤/搜索