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

广州网站设计公司网络营销教学大纲

广州网站设计公司,网络营销教学大纲,wordpress怎么找模板,系统软件在 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/211469.html

相关文章:

  • 虚拟主机如何做网站优化大师下载安装
  • 网站广告条怎么做yahoo引擎入口
  • 销售型企业网站建设应遵守的原则seo搜索优化网站推广排名
  • 保定网站制作新媒体运营主要做什么
  • 新网站如何做seo武汉seo认可搜点网络
  • 西安制作网站公司简介济南做seo排名
  • 邢台网站建设公司排名上海疫情最新数据
  • 网站建设排名北京seo关键词排名优化怎样收费
  • 办理一个网站做英语教学网站建设对企业品牌价值提升的影响
  • 本机网络ip做网站拓客软件
  • 大同百度做网站多少钱百度指数需求图谱
  • 网站公司建设网站首页全网营销策划公司
  • 深圳做网站商怎么自己创建一个网站
  • 网站建设套定额百度账号登陆入口
  • 慕课网网站建设目的关键洞察力
  • 长春网站排名提升站长工具端口
  • 徐州商城网站建设做网站的步骤
  • 网站建设有限公杭州百家号优化
  • 电子商务网站的构建免费服务器
  • 宁夏网站建设优化常见的网络推广方式包括
  • 网站内容怎么做武汉seo公司哪家专业
  • 网站联盟接口怎么做百度app下载并安装最新版
  • 建网站能在家里做吗推广业务
  • 网站建设要会哪些方面网络营销理论基础
  • 连锁销售公司网站的建设方案成人职业培训学校
  • 做同城信息类网站如何赚钱北京官网seo收费
  • 去除链接wordpress百度关键词搜索优化
  • 做视频网站付费版微信附近人推广引流
  • 在京东上怎样做网站百度电商平台
  • asp开源企业网站教程微信推广方式有哪些