中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

for循序為什么要用let

發布時間:2022-03-01 11:02:15 來源:億速云 閱讀:121 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“for循序為什么要用let”,內容詳細,步驟清晰,細節處理妥當,希望這篇“for循序為什么要用let”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

因為 var 是在 js 語言設計者 Brendan Eich 設計的一種缺陷,這種缺陷不能更改,并且作者在十年前就提出了修復此缺陷.
在進行講解的時候,小伙伴們需要知道在 js 語言中,if 和 for 是沒有作用域的,只有 function 才擁有,var 是全局變量,let 是塊級作用域,const 是常量(不可改變的變量稱為常量);可以把 let 看做成更完美的 var

//ES5中使用for循環點擊事件 //bug:每次點擊都是最后一個點擊按鈕觸發點擊
for(var i=0;i<btns.length;i++){
btns[i].addEventListener('click',function(i){
console.log(`第${i}按鈕發生點擊`);
})
}
//es5中for循環使用var定義的,就相當于定義了一個全局的i,每次循環i++都可以進行改變i的值,
//var進行變量提升和代碼預解析后var是在全局最前面的,es5的解決方案是采用閉包進行解決;
//解決方案
for(var i=0;i<btns.length;i++){

( function(num){
btns[i].addEventListener('click',function(i){
console.log(`第${num}按鈕發生點擊`);
})
})(i);
}
//函數具有塊級作用域,把當前每次循環的i通過閉包的方式傳遞給點擊事件,因為是立即執行函數,所以每次傳遞進去執行
//后,在開始下一輪循環,直到最后點擊事件循環完畢,雖然是使用var定義的i,但是i在改變前點擊事件通過閉包的方式
//傳遞進去并執行,直接把當前的i定義在當前函數作用域內

 ES6循環

for(let i=0;i<btns.length;i++){
btns[i].addEventListener('click',function(i){
console.log(`第${num}按鈕發生點擊`);
})
}
//let具有塊級作用域的,每次循環時進去不會改變當前傳遞i的值,因為每次循環都是變量提升和代碼預解析
//都是把let提升到當前作用域的最前方

讀到這里,這篇“for循序為什么要用let”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宜宾市| 晴隆县| 沧源| 瑞丽市| 阿城市| 巴彦淖尔市| 突泉县| 建湖县| 常熟市| 邯郸市| 图木舒克市| 彰化市| 澄迈县| 陆河县| 塘沽区| 德昌县| 尚志市| 彭州市| 临漳县| 合江县| 富平县| 绥芬河市| 龙州县| 容城县| 枞阳县| 商城县| 凯里市| 剑阁县| 荣昌县| 黎平县| 筠连县| 临高县| 浏阳市| 荆门市| 中超| 宕昌县| 兴宁市| 金乡县| 汪清县| 康定县| 五河县|