var & let & const
var
?有變數提升
?函式作用域內有效
?宣告的變數會成為 window 物件的屬性
let
?沒有變數提升
?僅在塊作用域內有效 {}
?宣告的變數 不會 成為 window 的屬性
for(var i=0; i<3; i++) {
setTimeout(() => { console.log(i) }, 1000) // 3 3 3
}
for(let i=0; i<3; i++) {
setTimeout(() => { console.log(i) }, 1000) // 0 1 2
}
/*
var 宣告的變數,作用域在全域,定時器每次參考的都是同一個地址的值的遞增和,當定時器獲取 i 的值時,
i 的值已經疊加到回圈結束;
let 宣告的變數,作用域在塊中,每次處理,都會初始化一個新的值,定時器參考的不是同一個地址的值,
所以沒有出現同一個值遞增到結束回圈的情況
*/
const
?與 let 相似,但宣告的值是一個常量,不能迭代,
let arr = [2,4]
for(const i of arr) { // for of 用來獲取陣列的值
console.log(i) // 2 , 4
}
?for-of , for-in 的每次迭代,都創建了一個新的物件,const 特別適合這種使用場景
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/280955.html
標籤:區塊鏈
上一篇:關于藥物設計
