var、let、const之間的區(qū)別


一、var

在ES5中,頂層對象的屬性和全局變量是等價的,用var聲明的變量既是全局變量,也是頂層變量

注意:頂層對象,在瀏覽器環(huán)境指的是window對象,在 Node 指的是global對象

二、let

let 是ES6新增的命令,用來聲明變量

用法類似于var,但是所聲明的變量,只在let命令所在的代碼塊內(nèi)有效

let不允許在相同作用域中重復聲明

三、const

const聲明一個只讀的常量,一旦聲明,常量的值就不能改變

區(qū)別:
  • 1. 變量提升

    var 聲明的變量存在變量提升,即變量可以在聲明之前調用,值為undefined

    letconst 不存在變量提升,即它們所聲明的變量一定要在聲明后使用,否則報錯

console.log(a)   // undefined
var a= 10

console.log(b)  // Cannot access 'num' before initialization
let b = 20

console.log(c)  // Cannot access 'num' before initialization
const c = 30
  • 2. 塊級作用域

    var 不存在塊級作用域

    letconst 存在塊級作用域

{
    var a = 10
}
console.log(a)  // 10

{
    let b = 20
}
console.log(b)  // Uncaught ReferenceError: b is not defined

{
    const c = 30
}
console.log(c)  // Uncaught ReferenceError: c is not defined
  • 3. 重復聲明

    var 允許重復聲明變量

    letconst 在同一作用域不允許重復聲明變量

var a = 10
a = 20
console.log(a)  // 20

let b = 10
b = 20
console.log(b)  // 20

const c = 10
c = 20
console.log(c) // Uncaught TypeError: Assignment to constant variable
  • 4. 修改聲明的變量

    varlet 可以

    const 聲明一個只讀的常量。一旦聲明,常量的值就不能改變

var a = 10
a = 20
console.log(a)  // 20

let b = 10
b = 20
console.log(b)  // 20

const c = 10
c = 20
console.log(c) // Uncaught TypeError: Assignment to constant variable
總結:能用const的情況盡量使用const,其他情況下大多數(shù)使用let,避免使用var
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容