js中多let与var

在 JavaScript 中,letvar 都用于声明变量,但它们有一些关键的区别。主要区别包括作用域、变量提升、可重复声明、以及在全局作用域中的行为。

1. 作用域(Scope)

  • let :块级作用域。用 let 声明的变量只在其所在的代码块 { ... } 中有效。

    { let x = 10; } console.log(x); // ReferenceError: x is not defined

  • var :函数级作用域。用 var 声明的变量在函数内可用,但如果在函数外声明,则它是全局变量。

    { var y = 20; } console.log(y); // 20

2. 变量提升(Hoisting)

  • let:存在"暂时性死区"(Temporal Dead Zone),即变量在声明前不能访问。虽然在内存中存在,但访问会导致错误。

    console.log(a); // ReferenceError: Cannot access 'a' before initialization let a = 5;

  • var :会被提升至作用域顶部,因此可以在声明之前访问,但值为 undefined

    console.log(b); // undefined var b = 5;

3. 重复声明(Redeclaration)

  • let:在同一作用域内不允许重复声明同一变量。

    let c = 1; let c = 2; // SyntaxError: Identifier 'c' has already been declared

  • var:允许在同一作用域内重复声明。

    var d = 1; var d = 2; // No error, d is now 2

4. 全局作用域中的行为

  • let :在全局作用域中声明时不会成为 window 对象的属性。

    let e = 10; console.log(window.e); // undefined

  • var :在全局作用域中声明时会成为 window 对象的属性。

    var f = 10; console.log(window.f); // 10

相关推荐
whm27772 分钟前
Visual Basic 值传递与地址传递
java·开发语言·数据结构
CoderYanger7 分钟前
前端基础——HTML练习项目:填写简历信息
前端·css·职场和发展·html
muyouking1112 分钟前
深入理解 HTML `<label>` 的 `for` 属性:提升表单可访问性与用户体验
前端·html·ux
CHANG_THE_WORLD12 分钟前
c语言位运算 汇编代码分析
c语言·开发语言·汇编
软件技术NINI16 分钟前
html css js网页制作成品——饮料官网html+css+js 4页网页设计(4页)附源码
javascript·css·html
软件技术NINI16 分钟前
html css js网页制作成品——HTML+CSS辣条俱乐部网页设计(5页)附源码
javascript·css·html
x_feng_x23 分钟前
Java从入门到精通 - 集合框架(二)
java·开发语言·windows
IT_陈寒33 分钟前
Java性能调优:从GC日志分析到实战优化的5个关键技巧,让你的应用快如闪电!
前端·人工智能·后端
Le1Yu34 分钟前
雪崩问题及其解决方案(请求限流、线程隔离、服务熔断、fallback、sentinel实现以上功能)
java·开发语言
Mintopia39 分钟前
🚀 Next.js API 压力测试:一场前端与后端的“极限拉扯”
前端·后端·全栈