ES標準下中的let,var和const
-
let會報重復宣告,var則比較隨意,重不重復無所謂
// 使用 var 的時候重復宣告變數是沒問題的,只不過就是后面會把前面覆寫掉 var num = 100 var num = 200// 使用 let 重復宣告變數的時候就會報錯了 let num = 100 let num = 200 // 這里就會報錯了// 使用 const 重復宣告變數的時候就會報錯 const num = 100 const num = 200 // 這里就會報錯了 -
var對變數預決議可以“先使用再定義”,而let和const則不行,也就是沒有變數提升
// 因為預決議(變數提升)的原因,在前面是有這個變數的,只不過沒有賦值 console.log(num) // undefined var num = 100// 因為 let 不會進行預決議(變數提升),所以直接報錯了 console.log(num) let num = 100// 因為 const 不會進行預決議(變數提升),所以直接報錯了 console.log(num) const num = 100 -
“let先使用再定義”(補充上一條)


-
var與window掛鉤,會自動成為window的屬性,let不會
var name = 'dasha' let age = 12 console.log(window.name) // dasha console.log(window.age) // undefined -
const定義常量,以上的都是叫變數,let和var都可以更改變數的值,const則不行
let num = 100 num = 200 console.log(num) // 200const num = 100 num = 200 // 這里就會報錯了,因為 const 宣告的變數值不可以改變(我們也叫做常量) -
const宣告時必須賦值,否則就會報錯
let num num = 100 console.log(num) // 100 const num // 這里就會報錯了,因為 const 宣告的時候必須賦值 -
let和const都會被代碼塊限制作用范圍,而var只有函式才能限制范圍,其他的不能限制
// var 宣告的變數只有函式能限制其作用域,其他的不能限制 if (true) { var num = 100 } console.log(num) // 100// let 宣告的變數,除了函式可以限制,所有的代碼塊都可以限制其作用域(if/while/for/...) if (true) { let num = 100 console.log(num) // 100 } console.log(num) // 報錯 // const 宣告的變數,除了函式可以限制,所有的代碼塊都可以限制其作用域(if/while/for/...) if (true) { const num = 100 console.log(num) // 100 } console.log(num) // 報錯
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/526007.html
標籤:JavaScript
下一篇:JS中的this指向問題
