在es5中,宣告變數只有var和function兩種形式。後來es6新增了let和const宣告變數的方式,
1.作用域:
var的作用域:只存在於當前作用域。2.是否存在暫時性死區?let的作用域:當前塊級作用域內
const作用域:當前塊級作用域內
let和const存在暫時性死區。即只要塊級作用域內存在let命令,它所宣告的變數就「繫結」(binding)這個區域,不再受外部的影響。3.是否存在變數提公升
var宣告的變數存在變數提公升(將變數提公升到當前作用域的頂部)。即變數可以在宣告之前呼叫,值為undefined。
let和const不存在變數提公升。即它們所宣告的變數一定要在宣告後使用,否則報referenceerror錯。4,是否參在塊級作用域
var不存在塊級作用域。5,是否能修改宣告的變數?let和const存在塊級作用域。
什麼是塊級作用域: es5中作用域有:全域性作用域、函式作用域。沒有塊作用域的概念。因此也有一系列的問題。es6中新增了塊級作用域。塊作用域由 包括,if語句和for語句裡面的也屬於塊作用域。
var和let可以。6.是否允許重複宣告變數?const宣告乙個唯讀的常量。一旦宣告,常量的值就不能改變。const宣告的變數不得改變值,這意味著,const一旦宣告變數,就必須立即初始化,不能留到以後賦值。
var允許重複宣告變數。let和const在同一作用域不允許重複宣告變數
記錄 var let const 的區別
es5 只有全域性作用域和函式作用域,沒有塊級作用域,這帶來很多不合理的場景。es6中增加了塊級作用域的概念,var 可以重複申明,無法限制修改,沒有塊級作用域 let 不能重複申明,變數 可以修改,塊級作用域,只在當前作用域有效 const 不能重複申明,常量 不可修改,塊級作用域,只在當前作用域...
面試 var let const的區別
var只有全域性作用域和函式作用域概念,沒有塊級作用域的概念。但是會把 內也假稱為塊作用域。let只有塊級作用域的概念 由 包括起來,if語句和for語句裡面的也屬於塊級作用域。如圖 var 存在變數提公升,而 let,const 後面會提及 宣告的變數卻不存在變數提公升,所以用 let 定義的變數...
var let const之間的區別
let 1 let不存在變數提公升 var命令會發生變數提公升現象,變數可以在宣告之前使用,值為undefined。let 命令定義的變數則會報錯referenceerror 2 let存在暫時性死區 塊級作用域let 宣告的變數不受外部影響 3 不允許重複宣告 const 1 const宣告乙個唯...