解決for迴圈有時只輸出最後乙個結果

2021-10-03 12:47:48 字數 588 閱讀 7772

我們平常用都是這樣的

for (var i = 0; i < 3; i++)

有時候列印i出來的是2,也有時候是按照順序打出來的,但是很不穩定。我們要操作就很麻煩,

for (let i = 0; i < 3; i++)

把var換成let就可以了,因為let宣告的變數只在它所在的**塊有效,

var命令宣告的變數i,在全域性範圍內都有效,所以全域性只有乙個變數i。每一次迴圈,變數i的值都會發生改變,而迴圈內被賦給陣列a的函式內部的console.log(i),裡面的i指向的就是全域性的i。也就是說,所有陣列a的成員裡面的i,指向的都是同乙個i,導致執行時輸出的是最後一輪的i的值,也就是 10。

如果使用let,宣告的變數僅在塊級作用域內有效,最後輸出的是 6。

想要具體了解可以看這裡面介紹 

JS的for迴圈總是彈出最後乙個值得解決方法

首先看一下html內容 現在我想得到標籤內的索引和內容,你也許刷刷的寫下以下 for i 0 i els.length i 但是結果卻不盡人意,總是彈出 6 果敢 比較好的解決方法有以下幾種 1 使用閉包 var els document.getelementsbytagname li for i ...

世界上最後乙隻雞蛋

整個雞家族都不甘心自己在地球上的地位 任人宰割,供人食用。雞王決定扭轉雞家族的處境,於是就召集幕僚想辦法。要想人類放棄吃雞很難。乙個幕僚說。他曾經用十斤雞蛋收買了一位寫東西的人,讓他在報上寫文章說,吃雞容易患癌症!可人類還是照吃不誤。依我看,人類吃咱們並不是因為恨咱們,而是說明他們離不開咱們。另一位...

SQLite 只更新最後一條記錄

事件發生後,需要有個標誌,記錄事件發生的時間。有可能需要更新表中最後一條資料。下面程式是,把table表中的flag值設定為1111,其中id是表中記錄最大的id值。id鍵值是自動遞增的 程式 char update 128 update table set flag 1111 where id s...