javascript的let和var
在JavaScript中,var
和let
都用于声明变量,但它们有一些重要的区别:
1. 作用域
var
- 函数级作用域:使用
var
声明的变量的作用域是函数级的。这意味着变量在整个函数内都有效,无论在函数内的哪个位置声明。 - 例如:
function test() { if (true) { var x = 10; } console.log(x); // 10,在if语句块外仍能访问x } test();
- 函数级作用域:使用
let
- 块级作用域:
let
声明的变量具有块级作用域,只在其所在的代码块(用{}
包围的区域)内有效。 - 例如:
function test() { if (true) { let y = 20; } console.log(y); // 报错,y在if语句块外不可访问 } test();
- 块级作用域:
2. 变量提升
var
- 存在变量提升:使用
var
声明的变量会被提升到函数顶部,但变量的值是undefined
,直到实际赋值语句执行。 - 例如:
console.log(x); // undefined var x = 10;
- 存在变量提升:使用
let
- 不存在变量提升:在声明
let
变量之前访问该变量会导致ReferenceError
。 - 例如:
console.log(y); // 报错 let y = 20;
- 不存在变量提升:在声明
3. 重复声明
var
- 允许重复声明:在同一个作用域内可以多次用
var
声明同一个变量,后面的声明会覆盖前面的声明。 - 例如:
var z = 5; var z = 10; console.log(z); // 10
- 允许重复声明:在同一个作用域内可以多次用
let
- 不允许重复声明:在同一个作用域内不能用
let
重复声明已经存在的变量,会报错。 - 例如:
let a = 5; let a = 10; // 报错
- 不允许重复声明:在同一个作用域内不能用
。
原文地址:https://blog.csdn.net/qq_45755863/article/details/144029124
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!