let var與const
1.說在let var const之前要引入的是塊級作用域
ES5 只有全域性作用域和函式作用域,沒有塊級作用域,這帶來很多不合理的場景。
塊級作用域包括{},if語句和for語句裡面的{}
2.var
1.var定義的變數,沒有塊的概念,可以跨塊訪問, 不能跨函式訪問。
2.可以重複宣告,後面的會覆蓋前面的。
3.存在變數提升(即未初始化會輸出undefined,不報錯)。
{
var b = 1;
}
b // 1
{
var a=1;
var a=2;
}
a // 2
console.log(foo); // 輸出undefined
var foo = 2;
3.let
1.let是塊級作用域,在塊內使用對塊外沒有影響
2.let不允許重複宣告,會報錯。
3.不存在變數提升.
4.暫時性死區
{
let a = 10;
}
a // ReferenceError: a is not defined.
{
let a=1;
let a=2;
} //報錯
console.log(bar); // 報錯ReferenceError
let bar = 2;
暫時性死區:只要塊級作用域記憶體在let命令,它所宣告的變數就“繫結”(binding)這個區域,不再受外部的影響。
if (true) {
// TDZ開始
tmp = 'abc'; // ReferenceError
console.log(tmp); // ReferenceError
let tmp; // TDZ結束
console.log(tmp); // undefined
tmp = 123;
console.log(tmp); // 123
}
4.const
1.宣告一個只讀的常量。一旦宣告,常量的值就不能改變。
2.const宣告的變數不得改變值,這意味著,const一旦宣告變數,就必須立即初始化,不能留到以後賦值。
3.只能在塊作用域裡訪問,存在暫時性死區,不存在變數宣告提前,不允許重複定義
const PI = 3.1415;
PI // 3.1415
PI = 3;
// TypeError: Assignment to constant variable.
const foo;
// SyntaxError: Missing initializer in const declaration
相關文章
- var let const區別
- let const var 區別
- let,const,var區別
- var、const、let 的區別
- es6 let const與var 的區別
- 1.變數:var,let,const變數
- var和let/const的區別
- var,let和const深入解析(一)
- ES6之var、let、const
- var、let和const的區別
- var、let和const的知識點
- JavaScript中let、const、var 的區別JavaScript
- When to use var vs let vs const in JavaScriptJavaScript
- JavaScript中的var、let 及 const 區別JavaScript
- var、let、const宣告變數的區別變數
- 前端 let、const和var你真的瞭解麼?前端
- ES6中var,let,const的區別
- 深入理解JS:var、let、const的異同JS
- 5分鐘掌握var,let和const異同
- let與const命令
- var、let和const三者有哪些區別?
- 【前端面試】(四)JavaScript var let const的區別前端面試JavaScript
- var、let、const、解構、展開、new、this、class、函式函式
- 前端學習筆記 - var、let和const的用法前端筆記
- [譯] 在JavaScript中何時使用var、let及constJavaScript
- JavaScript 高階—— ES6新增語法 const(let const var區別)JavaScript
- let與const區別
- var、let、const變數宣告的區別及特點變數
- JavaScript 中的 Var,Let 和 Const 有什麼區別JavaScript
- ES5 和 ES6:let const var 區別
- ES6中let和var和const的區別
- 【ES6】var、let、const三者的區別
- 深入理解ES6之var,let,const區別
- let與var的區別
- es6-let與const
- 關於es6 let var const 以及Symbol的總結Symbol
- 變數和函式宣告提升,let和var const區別變數函式
- TypeScript let與var的區別TypeScript