日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

JavaScript ES2015

發(fā)布時間:2025/7/14 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaScript ES2015 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
<button></button> <button></button> <button></button> <button></button><div id="output"></div><script>var buttons = document.querySelectorAll('button')var output = document.querySelector('#output')for (var i = 0; i < buttons.length; i++) {buttons[i].addEventListener('click', function() {output.innerText = buttons[i].innerText})} </script>
從直觀角度看 這段代碼沒有語義上的錯誤,但是當我們點擊任意一個按鈕時,就會報出這樣的錯誤信息:

Uncaught TypeError: Cannot read property 'innerText' of undefined

出現(xiàn)這個錯誤的原因是因為button[i]不存在,即為undefined

每次我們點擊按鈕時,事件監(jiān)聽回調函數(shù)中得到的變量i都會等于button.length,也就是4 而button[4]恰恰不存在,所以導致錯誤發(fā)生

導致i得到的值都是button.length的原因是因為JavaScript中沒有塊兒級作用域,而使對i的變量引用(Reference)一直保持在上一層作用域(循環(huán)語句所在層)上,而當循環(huán)結束時i正好是buttons.length

做一個小改動如下:

?

// ... for (/* var */ let i = 0; i < buttons.length; i++) {// ... } // ...

?

通過 把for語句中對計數(shù)器i的定義語句從var換成let ,因為let語句會使該變量處于一個塊兒級作用域中,從而讓事件監(jiān)聽回調函數(shù)中的變量引用得到保持,

?

?

  出現(xiàn)這個錯誤的原因是因為button[i] 不存在,即為undefined

?

?

?

?

?

轉載于:https://www.cnblogs.com/moli-/p/6549101.html

總結

以上是生活随笔為你收集整理的JavaScript ES2015的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。