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

wordpress+tag+数字宁德seo培训

wordpress+tag+数字,宁德seo培训,北京通智能小程序,seo优化代理在 JavaScript 中,变量声明经历了从 var 到 let/const 的演变。ES6(2015)引入的 let 和 const 解决了 var 的关键缺陷。接下来我们一起看看三者的区别。 一、核心区别速览 特性varletconst作用域函数作用域块级作用域块级作用域重复声明✅ 允…

在 JavaScript 中,变量声明经历了从 varlet/const 的演变。ES6(2015)引入的 letconst 解决了 var 的关键缺陷。接下来我们一起看看三者的区别。


一、核心区别速览
特性varletconst
作用域函数作用域块级作用域块级作用域
重复声明✅ 允许❌ 禁止❌ 禁止
变量提升✅ 提升⚠️ 暂时性死区⚠️ 暂时性死区
初始值可不初始化可不初始化❌ 必须初始化
重新赋值✅ 允许✅ 允许❌ 禁止

二、详解关键特性
  1. 作用域(Scope)

    • var:函数作用域
      仅在函数内部创建新作用域,在 if/for 等块中会泄漏到外部:

      function run() {if (true) {var x = 10;}console.log(x); // 10(泄漏到函数作用域)
      }
      
    • let/const:块级作用域
      只在 {} 块内有效:

      if (true) {let y = 20;const z = 30;
      }
      console.log(y); // ReferenceError
      console.log(z); // ReferenceError
      
  2. 重复声明

    • var 允许重复声明(易引发 bug):
      var a = 1;
      var a = 2; // 不报错
      
    • let/const 禁止重复声明
      let b = 5;
      let b = 10; // SyntaxError
      
  3. 变量提升(Hoisting)

    • var 提升且初始化为 undefined
      console.log(c); // undefined
      var c = 15;
      
    • let/const 存在暂时性死区(TDZ)
      声明前访问会报错:
      console.log(d); // ReferenceError
      let d = 25;
      
  4. 常量性质

    • const 必须初始化且不能重新赋值
      const PI = 3.14;
      PI = 3.14159; // TypeError
      
    • 注意:const 定义的对象/数组内容可修改(绑定关系不变):
      const user = { name: "Alice" };
      user.name = "Bob"; // ✅ 允许
      user = { name: "Eve" }; // ❌ TypeError(重新赋值)
      

三、最佳实践指南
  1. 默认使用 const
    适用于所有不需要重新赋值的变量(避免意外修改)。

    const API_URL = "https://api.example.com";
    const MAX_ITEMS = 100;
    
  2. 需要重新赋值时用 let
    替代循环计数器等场景中的 var

    for (let i = 0; i < 5; i++) {console.log(i); // i 只在循环块内有效
    }
    
  3. 避免使用 var
    除非维护旧代码,新项目优先使用块级作用域变量。

  4. 全局变量注意
    var 在全局作用域会挂载到 window 对象,let/const 不会:

    var globalVar = "old";
    let globalLet = "new";
    console.log(window.globalVar); // "old"
    console.log(window.globalLet); // undefined
    

四、关键示例对比
// 作用域对比
function scopeTest() {if (true) {var varVar = "var";let letVar = "let";}console.log(varVar); // "var"(泄漏)console.log(letVar); // ReferenceError
}// 循环中的闭包问题(经典面试题)
for (var i = 0; i < 3; i++) {setTimeout(() => console.log(i), 100); // 输出 3, 3, 3
}for (let j = 0; j < 3; j++) {setTimeout(() => console.log(j), 100); // 输出 0, 1, 2
}

总结
  • var:历史遗留,存在作用域泄漏和提升问题,现代开发中应避免
  • let:块级作用域,需重新赋值时的首选(如循环计数器)。
  • const:块级作用域,声明常量或引用类型时的默认选择。

迁移建议:在新项目和 ES6+ 环境中全面采用 let/const,使用 linter 工具(如 ESLint)强制禁用 var

通过理解这些差异,你可以减少变量相关 bug,写出更清晰、更稳定的 JavaScript 代码!

http://www.dtcms.com/wzjs/252546.html

相关文章:

  • 河北流感疫情最新消息网站优化方案
  • 做网站前端外贸建站
  • 宁波互联网企业杭州排名优化公司
  • 网站建设公司特色前端开发培训机构推荐
  • 企业做网站和宣传册的作用双11各大电商平台销售数据
  • 公司网站首页制作教程广州网站营销推广
  • 一个做搞笑类视频的网站取名网络营销的主要内容包括
  • 做网站好看的背景图片深圳市文化广电旅游体育局
  • 怎样在凡科免费做网站网络营销方案案例
  • 做图片为主的网站对服务器的要求管理培训
  • 个人做搜索引擎网站违法吗百度指数明星搜索排名
  • 中国建设银行网站网上业务服务范围销售方案怎么做
  • 国外网站访问速度慢免费发布推广平台
  • 邓州市网站建设企业营销策划有限公司
  • 互动网站建设什么意思网络视频营销的案例
  • Wordpress网站仿站优化网站排名费用
  • 免费软件大全app下载seo西安
  • 大淘客网站推广位怎么做新站整站快速排名
  • 广告策划ppt案例优化关键词排名提升
  • 建设部网站官网办事厅百度搜索关键词排行榜
  • 广东建设工程执业资格注册中心网站互联网推广渠道
  • 做网站用什么环境网站优化策略分析
  • 长沙市建站自学seo大概需要多久
  • 工作1月工资257元aso关键词排名优化是什么
  • ppt做仿网站点击效果南宁seo渠道哪家好
  • 南京外贸网站建设报价今天国际新闻最新消息
  • 国产做网站网络策划与营销
  • 做网站运营工作流程网络营销八大工具
  • 网站建设 落地页网站制作的费用
  • javaweb做视频网站难吗网络seo啥意思