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

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.lryc.cn/news/476636.html

相关文章:

  • 基于人工智能的搜索和推荐系统
  • 冷钱包与热钱包的差异 | 加密货币存储的安全方案
  • 014:无人机遥控器操作
  • PCL 点云高度归一化
  • 【Effective C++】阅读笔记4
  • 浅谈mysql【8.0】链接字符串
  • BERT,RoBERTa,Ernie的理解
  • 获取 Wind 数据并进行简单的择时分析
  • 小檗碱的酵母代谢工程生物合成-文献精读78
  • 文件指针和写入操作
  • 跨越科技与文化的桥梁——ROSCon China 2024 即将盛大开幕
  • springboot+shiro 权限管理
  • PureMVC在Unity中的使用(含下载链接)
  • 25国考照片处理器使用流程图解❗
  • 一位纯理科生,跨界自学中医,自行组方治好胃病、颈椎病与高血脂症,并在最权威的中国中医药出版社出版壹本专业中医图书!
  • 运动控制 双轮差速模型轨迹规划
  • 使用 Sortable.js 库 实现 Vue3 elementPlus 的 el-table 拖拽排序
  • MySQL索引相关介绍及优化(未完...)
  • 【AI+教育】一些记录@2024.11.04
  • 三维测量与建模笔记 - 2.2 射影几何
  • 论文速读:简化目标检测的无源域适应-有效的自我训练策略和性能洞察(ECCV2024)
  • ros与mqtt相互转换
  • Golang | Leetcode Golang题解之第522题最长特殊序列II
  • 安卓开发之数据库的创建与删除
  • 数据结构:LRUCache
  • shell脚本案例:创建用户和组
  • C++笔试题之实现一个定时器
  • 【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,2-13
  • 快消零售行业的培训创新:构建在线培训知识库
  • 【AI开源项目】Botpress - 开源智能聊天机器人平台及其部署方案