我們平常用都是這樣的
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...