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

能搜任何网站的浏览器怎么做html网页

能搜任何网站的浏览器,怎么做html网页,网上接网站开发类订单的平台,东莞城建局官网文章目录 一、变量提升底层机制二、提升规则三、执行阶段表现四、变量提升特殊注意点五、变量提升最佳实践建议六、var、let 和 const 的核心区别对比七、关键差异详解1. 作用域范围2. 变量提升与暂时性死区(TDZ)3. 重复声明4. const 的特殊性 八、最佳实…

文章目录

      • 一、变量提升底层机制
      • 二、提升规则
      • 三、执行阶段表现
      • 四、变量提升特殊注意点
      • 五、变量提升最佳实践建议
      • 六、`var`、`let` 和 `const` 的核心区别对比
      • 七、关键差异详解
        • 1. 作用域范围
        • 2. 变量提升与暂时性死区(TDZ)
        • 3. 重复声明
        • 4. const 的特殊性
      • 八、最佳实践建议
      • 九、常见问题

JavaScript 变量提升(Hoisting)是编译阶段的特殊机制,其核心原理如下:

一、变量提升底层机制

1️⃣ 编译阶段处理

  • 在代码执行前,JS 引擎会先解析代码并创建执行上下文
  • 对所有声明语句(varfunction)进行预处理

2️⃣ 存储空间划分

// 编译阶段会创建变量环境(VariableEnvironment):
{a: undefined,      // var 声明b: function(){...} // function 声明
}

二、提升规则

声明类型提升行为示例
var 变量声明提升到作用域顶部,值初始化为undefinedconsole.log(a); var a=1;undefined
function声明整个函数体提升可先调用再声明
let/const存在暂时性死区(TDZ)提前访问会报错

暂时性死区:暂时性死区(Temporal Dead Zone)是 ES6 中 let/const 声明的特性,指:从进入作用域到变量声明语句执行前的区域,此时访问变量会触发 ReferenceError。

三、执行阶段表现

// 原始代码
console.log(a);
var a = 1;// 实际执行逻辑等同于:
var a; // 提升声明
console.log(a); // undefined
a = 1; // 原地赋值

四、变量提升特殊注意点

  1. 函数优先级:函数声明提升优先于变量声明
console.log(foo); // 输出函数体,而非undefined
var foo = 1;
function foo() {}
  1. 重复声明覆盖(如下代码案例):
function b() {console.log("第一次调用");
}
function b() {console.log("第二次调用");
} // 后者覆盖前者
  1. 块级作用域影响(ES6+):
{let a = 1;var b = 2;
}
console.log(b); // 2
console.log(a); // ReferenceError

五、变量提升最佳实践建议

  1. 使用 let/const 替代 var 避免意外提升
  2. 函数优先用表达式写法:const fn = () => {}
  3. 避免在同一作用域重复声明同名标识符

💡 现代开发中应通过 ESLint 规则 (如 no-use-before-define) 来规避变量提升带来的潜在问题。


六、varletconst 的核心区别对比

特性varletconst
作用域函数作用域块级作用域块级作用域
重复声明✅ 允许❌ 禁止❌ 禁止
变量提升✅ 提升且初始化为undefined⚠️ 提升但存在 TDZ⚠️ 提升但存在 TDZ
初始化要求可后赋值可后赋值❗ 必须立即赋值
全局对象属性✅ (如 window.a)
重新赋值✅ 允许✅ 允许❌ 禁止(对象属性可修改)

七、关键差异详解

1. 作用域范围
// var:函数作用域
function testVar() {if (true) {var a = 1;}console.log(a); // 1(泄露到函数作用域)
}// let/const:块级作用域
function testLet() {if (true) {let b = 2;const c = 3;}console.log(b); // ReferenceErrorconsole.log(c); // ReferenceError
}
2. 变量提升与暂时性死区(TDZ)
// var 的变量提升
console.log(x); // undefined
var x = 5;// let/const 的 TDZ
console.log(y); // ❌ ReferenceError
let y = 10;
3. 重复声明
var name = "Alice";
var name = "Bob"; // ✅ 允许let age = 25;
let age = 30; // ❌ SyntaxErrorconst PI = 3.14;
const PI = 3.14159; // ❌ SyntaxError
4. const 的特殊性
const user = { name: "Tom" };
user.name = "Jerry"; // ✅ 允许(修改对象属性)
user = {}; // ❌ TypeError(禁止重新赋值)const arr = [1, 2];
arr.push(3); // ✅ 允许(修改数组内容)
arr = [4, 5]; // ❌ TypeError

八、最佳实践建议

  1. 优先使用 const
    声明后不需修改的变量(如配置项、数学常量)

  2. 需要重新赋值时用 let
    循环计数器、状态变量等

  3. 避免使用 var
    防止变量泄露和意外覆盖(ES6+项目)

  4. 注意循环陷阱

    // var 的陷阱
    for (var i = 0; i < 3; i++) {setTimeout(() => console.log(i)); // 输出 3, 3, 3
    }// let 的正确用法
    for (let j = 0; j < 3; j++) {setTimeout(() => console.log(j)); // 输出 0, 1, 2
    }
    

九、常见问题

  1. TDZ 的表现
    let/const 声明前访问会触发错误,而 varundefined

  2. 全局污染问题

    var globalVar = 1;
    console.log(window.globalVar); // 1let moduleVar = 2;
    console.log(window.moduleVar); // undefined
    
  3. 函数提升优先级
    函数声明优先于 var 变量提升:

    console.log(typeof func); // "function"
    var func = "变量";
    function func() {}
    
http://www.dtcms.com/wzjs/538965.html

相关文章:

  • 合肥网站定制开发公司网站整体建设方案
  • 品牌型网站制作公司做app好还是响应式网站
  • 北京响应式网站建设报价宝客上海网络科技有限公司
  • 北京网站建设搜q.479185700西安开发网站建设
  • 上海虹口建设局官方网站怎么在百度上做公司网页
  • 福州中小企业网站制作网络规划设计师希赛
  • 网站办事服务建设情况wordpress 备份云盘
  • 淄博市建设监理协会网站ui网上接单网站
  • 用云主机做网站关键词在线试听
  • 平顶山 网站建设公司电商网站设计线路图
  • 中国铁路建设集团公司网站互联网学校
  • 网站开发薪酬网站与经营网站
  • 织梦做双语网站wordpress建立博客
  • 密云免费网站建设网络营销策划活动方案
  • 金棕榈客户关系管理系统seo公司网站建设
  • 深圳做网站哪个平台好个人住房公积金贷款
  • 购物商城外贸网站线上做笔记的网站
  • 做任务能赚钱的网站怎么去建一个网站
  • 网站引导动画怎么做做网站需要的手续
  • wordpress连接信息江门网站优化排名
  • 怎么在导航网站上做推广wordpress导航主题模板下载地址
  • 公司做营销网站网站和服务器是什么关系
  • 东莞做网站公司电话在网站上做宣传
  • 济南国画网站建设如何制作自己的网站页制作
  • 巢湖网站建设常州网络推广价格
  • 网站建设基本范例vs做的网站如何使用
  • 用腾讯云做淘宝客购物网站视频建设网站的市场机会
  • 网站开发 分工小面网站建设
  • 虚拟主机WordPress建站凡科互动游戏可以作弊码
  • 怎么把网站变成免费的wordpress手动备份