var是ES5提出的,let和const是ES6提出的。
const聲明的是常量,必須賦值
1)一旦聲明必須賦值,不能使用null占位。
2)聲明后不能再修改
3)如果聲明的是復(fù)合類型數(shù)據(jù),可以修改其屬性
let和var聲明的是變量,聲明之后可以更改,聲明時可以不賦值
var允許重復(fù)聲明變量,后一個變量會覆蓋前一個變量。let和const在同一作用域不允許重復(fù)聲明變量,會報錯。
var聲明的變量存在變量提升(將變量提升到當(dāng)前作用域的頂部)。即變量可以在聲明之前調(diào)用,值為undefined。
let和const不存在變量提升。即它們所聲明的變量一定要在聲明后使用,否則報ReferenceError錯。
var不存在塊級作用域。let和const存在塊級作用域。
ES5中作用域有:全局作用域、函數(shù)作用域。沒有塊作用域的概念。
ES6(簡稱ES6)中新增了塊級作用域。塊作用域由 { } 包括,if語句和for語句里面的{ }也屬于塊作用域。
————————————————
版權(quán)聲明:本文為CSDN博主「_是魚」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_43875051/article/details/106189824