当前位置: 首页 > article >正文

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


http://www.kler.cn/a/378364.html

相关文章:

  • HarmonyOS 移动应用开发
  • 微服务系列二:跨微服务请求优化,注册中心+OpenFeign
  • Linux和,FreeRTOS 任务调度原理,r0-r15寄存器,以及移植freertos(一)
  • 使用 Spring Boot 搭建 WebSocket 服务器实现多客户端连接
  • torchvision.io.write_video 报错替换
  • 软件架构演变:从单体架构到LLM链式调用
  • 如何使用 EXPLAIN 分析查询计划?
  • 例行性工作
  • [LeetCode] 1137. 第N个泰波那契数
  • 串口屏控制的自动滑轨(未完工)
  • 【论文解读】EdgeYOLO:一种边缘实时目标检测器(附论文地址)
  • Django响应
  • 滑动窗口习题篇(上)
  • cookie、session、http简单理解
  • js逆向-模拟加密
  • 【华为HCIP实战课程三十】中间到中间系统协议IS-IS路由渗透及TAG标识详解,网络工程师
  • Centos7如何实现PXE网络批量无人值守安装
  • 4499元起!苹果发布新款Mac mini:升级M4/M4 Pro 仅手掌大小
  • Centos7搭建k8s集群
  • 光学基础知识(3)光的干涉
  • [FE] React 初窥门径(四):React 组件的加载过程(render 阶段)
  • 命令解释符--shell
  • Linux - grep的正则用法
  • 新视野大学英语读写教程1第四版PDF+答案+听力音频
  • react使用Fullcalendar
  • 在 openEuler 22.03 服务器上搭建 web 服务教程