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

如何理解变量提升和函数提升

在 JavaScript 中,变量提升和函数提升是指在代码执行之前,变量和函数声明会被提升到其所在作用域的顶部。这意味着你可以在声明之前使用它们,但它们的行为有所不同。

变量提升

变量提升是指变量声明(使用 var)会被提升到其所在作用域的顶部,但不会提升赋值部分。变量在提升后会被初始化为 undefined。

示例

console.log(a); // 输出: undefined
var a = 10;
console.log(a); // 输出: 10

上面的代码等价于:

var a;
console.log(a); // 输出: undefined
a = 10;
console.log(a); // 输出: 10

注意

  • let 和 const 声明的变量也会被提升,但它们在声明之前不能被访问。这种行为被称为“暂时性死区(Temporal Dead Zone, TDZ)”。
console.log(b); // ReferenceError: Cannot access 'b' before initialization
let b = 20;

函数提升

函数提升是指函数声明会被提升到其所在作用域的顶部,并且整个函数体都会被提升。这意味着你可以在函数声明之前调用它。

示例

console.log(sum(2, 3)); // 输出: 5function sum(a, b) {return a + b;
}

上面的代码等价于:

function sum(a, b) {return a + b;
}console.log(sum(2, 3)); // 输出: 5

注意

  • 函数表达式不会被提升。只有函数声明会被提升。
console.log(multiply(2, 3)); // TypeError: multiply is not a functionvar multiply = function(a, b) {return a * b;
};

上面的代码等价于:

var multiply;
console.log(multiply(2, 3)); // TypeError: multiply is not a functionmultiply = function(a, b) {return a * b;
};

总结

  • 变量提升:var 声明的变量会被提升到作用域的顶部,并初始化为 undefined。let 和 const 声明的变量也会被提升,但在声明之前不能被访问。
  • 函数提升:函数声明会被提升到作用域的顶部,并且整个函数体都会被提升。函数表达式不会被提升。

理解变量提升和函数提升有助于避免在代码中出现意外行为,并编写更清晰和可维护的代码。

http://www.lryc.cn/news/442100.html

相关文章:

  • monorepo基础搭建教程(从0到1 pnpm+monorepo+vue)
  • 使用Docker Compose一键部署
  • 【GVINS】
  • Linux 给 vmlinux 添加符号
  • 【mac】MacOS无法打开XXX文件,因为无法验证开发者的问题解决
  • Docker 无法拉取雷池 WAF 的解决方法
  • 进制转换,原码,反码,补码,二进制位运算及应用
  • node.js居家养老服务系统—计算机毕业设计源码35247
  • OpenHarmony(鸿蒙南向开发)——小型系统芯片移植指南(二)
  • Live800:从心出发,以情动人:构建深度客户服务文化
  • 分布式事务一致性:本地消息表设计与实践
  • 深入浅出Docker
  • Flink 与 Kubernetes (K8s)、YARN 和 Mesos集成对比
  • Python 集合的魔法:解锁高效数据处理的秘密
  • Go必知必会:构建复杂数据模型的基石
  • 大数据Flink(一百一十七):Flink SQL的窗口操作
  • 【西电电装实习】6. 手装无人机的蓝牙断连debug
  • AIGC实战之如何构建出更好的大模型RAG系统
  • 【数据结构-差分】力扣1589. 所有排列中的最大和
  • Spark部署文档
  • Broadcast:Android中实现组件及进程间通信
  • 5分钟熟练上手ES的具体使用
  • lambda 自调用递归
  • mac中git操作账号的删除
  • AI Agent的20个趋势洞察
  • Spring Boot-定时任务问题
  • 从混乱到清晰!借助Kimi掌握螺旋型论文结构的秘诀!
  • 中国电子学会202306青少年软件编程(Python)等级考试试卷(二级)真题
  • 样本册3D翻页电子版和印刷版同时拥有是一种什么体验
  • 8586 括号匹配检验