JavaScript中var let const的用法有哪些區別
目錄
- 1.重複宣告
- 1.1 var
- 1.2 let
- 1.3 const
- 2.變數提升
- 2.1 var
- 2.2 let
- 2.3 const
- 3.暫時性死區
- 3.1 var
- 3.2 let
- 3.3 conset
- 4. window物件的屬性和方法
- 5.塊級作用域
1.重複宣告
var支援重複宣告,let、const不支援重複宣告。
1.1 var
var a = 1; var a = 2; console.log(a);
輸出結果:
2
1.2 let
let b = 3; let b = 4; console.log(b);
輸出結果:
Uncaught SyntaxError: Identifier 'b' has already been declared
1.3 const
const c = 5; const c = 6; console.log(c);
輸出結果:
Uncaught SyntaxError: Identifier 'c' has already been declared
2.變數提升
var支援變數提升,但是隻提升宣告不提升值。let、const不支援變數提升。
2.1 var
a=2; console.log(a); var a = 1;
輸出結果:
2
2.2 let
a=2; console.log(a); let a = 1;
輸出結果:
Uncaught ReferenceError: Cannot access 'a' before initializat
ion at index.html:28
2.3 const
a=2; console.log(a); const a = 1;
輸出結果:
Uncaught ReferenceError: Cannot access 'a' before initialization at index.html:28
3.暫時性死區
var不存在暫時性死區,let、const存在暫時性死www.cppcns.com區。
只要作用域記憶體在let、const,它們所宣告的變數或常量就自動“繫結”在這個區域,不再受外部作用域影響。
3.1 var
var a = 1; function fun() { console.log(a); var a = 2; } fun();
輸出結果:
undefined
3.2 let
let a = 1; function fun() { console.log(a); let a = 2; } fun();
輸出結果:
Uncaught ReferenceError: Cannot access 'a' before initialization
3.3 conset
let a = 1; function fun() { console.log(a); const a = 2; } fun();
輸出結果:
Uncaught ReferenceError: Cannot access 'a' before initialization
4. windo客棧w物件的屬性和方法
全域性作用域中,var宣告的變數、通過function宣告的函式,會自動變成window物件的屬性和方法。
var a = 1; function add() { }; console.log(window.a === a); console.log(window.add === add);
輸出結果:
true
true
5.塊級ckGfj作用域
var沒有塊級作用域,let、const有塊級作用域。
使用var
在for迴圈中定義變數i:
for (var i = 0; i < 3; i++) { // console.log(i); } console.log(i);
輸出結果:
3
使用let
在for迴圈中定義變數i:
for (let i = 0; i < 3; i++) { // console.log(i); } console.log(i);
輸出結果:
Uncaught ReferenceError: i is not defined
到此這篇關於中var let const的用法有哪些區別的文章就介紹到這了,更多相關Script var用法內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!