var只有全域性作用域和函式作用域概念,沒有塊級作用域的概念。但是會把{}內也假稱為塊作用域。
let只有塊級作用域的概念 ,由 包括起來,if語句和for語句裡面的也屬於塊級作用域。
如圖:
var 存在變數提公升,而 let,const(後面會提及)宣告的變數卻不存在變數提公升,所以用 let 定義的變數一定要在宣告後再使用,否則會報錯。
let在變數宣告之前就訪問變數的話,會直接提示 referenceerror,而不像 var 那樣使用預設值 undefined、
如果區塊中存在let命令,這個區塊對這些命令宣告的變數,從一開始就形成了封閉作用域。凡是在宣告之前就使用這些變數,就會報錯。所以在**塊內,使用let命令宣告變數之前,該變數都是不可用的。這在語法上,稱為「暫時性死區」(temporal dead zone,簡稱 tdz)。
var變數可以多次宣告,而let不允許在相同作用域內,重複宣告同乙個變數。
使用 var 和 function 宣告的全域性變數依舊作為全域性物件的屬性,使用 let, const 命令宣告的全域性變數不屬於全域性物件的屬性
const 和 let 的作用域是一致的,不同的是 const 變數一旦被賦值,就不能再改變了,但是這並不意味著使用 const 宣告的變數本身不可變,只是說它不可被再次賦值了,而且const 宣告的變數必須經過初始化。
那麼什麼時候用 var、let 或 const ?
大多數情況下都使用 const,除非你知道你的變數的值還會被改變,以上大概是總結後的內容,還是需要多用 let 、const 。
面試官 說說var let const之間的區別
故心故心故心故心小故衝啊 在es5中,頂層物件的屬性和全域性變數是等價的,用var宣告的變數既是全域性變數,也是頂層變數 注意 頂層物件,在瀏覽器環境指的是window物件,在 node 指的是global物件 var a 10 console.log window.a 10 使用var宣告的變數存...
js關於變數宣告 var let const 區別
關於定義 宣告 變數 es6之前定義變數是用 var 那麼var有什麼問題嗎,如果但但從變數上來說是沒有問題的,var是variable的縮寫,英文翻譯是變數。var問題 1.汙染全域性 之前定義迴圈的方式 for var i 0 i 10 i alert i 有一天突然運營檔案,這個時候彈出的是 ...
前端面試 var let const 區別
var定義的變數,沒有塊的概念,可以跨塊訪問,不能跨函式訪問。let定義的變數,只能在塊作用域裡訪問,不能跨塊訪問,也不能跨函式訪問。const用來定義常量,使用時必須初始化 即必須賦值 只能在塊作用域裡訪問,而且不能修改。變數提公升 var 有變數提公升,變數可以在宣告前使用值為undefined...