JavaScript中var let const的用法有哪些区别

Hasana ·
更新时间:2024-09-20
· 1532 次阅读

目录

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 initialization 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存在暂时性死区。
只要作用域内存在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. window对象的属性和方法

全局作用域中,var声明的变量、通过function声明的函数,会自动变成window对象的属性和方法。

var a = 1; function add() { }; console.log(window.a === a); console.log(window.add === add);

输出结果:

true
true

5.块级作用域

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

到此这篇关于JavaScript中var let const的用法有哪些区别的文章就介绍到这了,更多相关JavaScript var用法内容请搜索软件开发网以前的文章或继续浏览下面的相关文章希望大家以后多多支持软件开发网!



let var const JavaScript

需要 登录 后方可回复, 如果你还没有账号请 注册新账号