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

巨鹿网站建设网络公司云南住房和建设厅网站

巨鹿网站建设网络公司,云南住房和建设厅网站,怀化物流网站建设报价,网站建设优化服务机构JavaScript作用域和闭包,原理与用途 作用域 原理 作用域可以理解为变量和函数的“活动范围”。在 JavaScript 里,变量和函数并不是在任何地方都能被访问的,它们只能在特定的范围内起作用,这个范围就是作用域。JavaScript 中有全…

JavaScript作用域和闭包,原理与用途

作用域

原理

作用域可以理解为变量和函数的“活动范围”。在 JavaScript 里,变量和函数并不是在任何地方都能被访问的,它们只能在特定的范围内起作用,这个范围就是作用域。JavaScript 中有全局作用域和函数作用域,ES6 还引入了块级作用域。

  • 全局作用域:全局作用域是最外层的作用域,在全局作用域中声明的变量和函数可以在代码的任何地方被访问。就好像整个城市是一个全局作用域,城市里的公共设施(全局变量和函数)大家都能使用。
  • 函数作用域:每个函数都有自己的作用域,在函数内部声明的变量和函数只能在该函数内部被访问,外部无法直接访问。这就好比每个家庭是一个函数作用域,家里的私有物品(函数内部的变量和函数)只有家庭成员(函数内部)能使用。
  • 块级作用域:使用 letconst 关键字在 {} 块中声明的变量,只在该块内有效。例如 if 语句、for 循环等的 {} 内就是块级作用域。这类似于小区里的某一栋楼,楼里的设施(块级作用域内的变量)只有这栋楼的住户(块级作用域内)能使用。
用途

作用域的存在可以避免变量名冲突,提高代码的可维护性和安全性。不同作用域中的变量相互独立,不会相互干扰。

代码示例
// 全局作用域
var globalVar = '我是全局变量';function testFunction() {// 函数作用域var functionVar = '我是函数内部变量';console.log(globalVar); // 可以访问全局变量console.log(functionVar); // 可以访问函数内部变量
}testFunction();
console.log(globalVar); // 可以访问全局变量
// console.log(functionVar); // 报错,无法访问函数内部变量if (true) {// 块级作用域let blockVar = '我是块级变量';console.log(blockVar); // 可以访问块级变量
}
// console.log(blockVar); // 报错,无法访问块级变量

闭包

原理

闭包是指有权访问另一个函数作用域中变量的函数。简单来说,就是一个函数可以记住并访问它外部函数的变量,即使外部函数已经执行完毕。可以把闭包想象成一个“背包”,函数在执行时会把它需要的外部变量“装”进这个“背包”里,带着这个“背包”到处走,随时都能使用里面的变量。

用途
  • 读取函数内部的变量:通过闭包可以在函数外部访问函数内部的变量。
  • 让这些变量的值始终保持在内存中:闭包可以让函数内部的变量的值始终保持在内存中,不会随着函数执行完毕而被销毁。
代码示例
function outerFunction() {var outerVar = '我是外部函数的变量';function innerFunction() {console.log(outerVar); // 访问外部函数的变量}return innerFunction;
}var closure = outerFunction();
closure(); // 输出: 我是外部函数的变量// 闭包让变量的值始终保持在内存中
function counter() {var count = 0;return function() {return ++count;};
}var increment = counter();
console.log(increment()); // 输出: 1
console.log(increment()); // 输出: 2

在上面的代码中,innerFunction 就是一个闭包,它可以访问 outerFunction 中的 outerVar 变量。increment 也是一个闭包,它可以让 count 变量的值始终保持在内存中,每次调用 increment 函数时,count 的值都会加 1。

http://www.dtcms.com/a/520747.html

相关文章:

  • 前端八股文 | HTTP - 实时通信方式/前后端通信方式
  • 谈一谈ViewDragHelper的工作原理?
  • Flutter框架机制详解
  • 火山引擎推出Data Agent评测体系,并发布《2025数据智能体实践指南》
  • SpringBoot-Web开发之异常处理
  • wap网站和app的区别php网站后台建设
  • 舞阳网站建设如何引流被动加好友
  • js wordpress 菜单管理如何给网站做seo优化
  • Nginx server_name 配置详解
  • 做宣传网站网页制作素材去哪找
  • 百度地图网站开发wordpress会员权限
  • 微硕WSF2040 N沟MOSFET:汽车电动尾门“防夹升降核”
  • 网站建设投标书报价表建设电子商务网站的好处
  • 网站建设与开发教学大纲全网商机app招标
  • Less-4 GET-Error based-Double Quotes-String
  • 互斥锁、读写锁、ref()函数使用
  • 2.6、Web漏洞挖掘实战(下):XSS、文件上传与逻辑漏洞深度解析
  • 邢台做网站的公司有那个营销型网站建设营销型
  • 青岛住房和城乡建设厅网站首页iis7.0 asp网站配置
  • vue3表格显示隐藏列全屏拖动功能
  • Git Commit Message 规范:写出清晰、可维护的提交记录
  • Orleans + Kubernetes + Istio 服务网格集成深度解析
  • 51网站怎么打开注册城乡规划师有什么用
  • 相向指针|盛最多水的容器|接雨水|验证回文串
  • Web3j 中使用 Transaction 类进行以太坊交互的核心方法
  • 承德微网站开发怎么弄一个自己的网站
  • web及h5录音wav下载
  • Kotlin 协程中常见的异步返回与控制方式(速览)
  • 做网站还有前景么动漫网页设计报告
  • Maven 多配置文件的使用