JS进阶-day1 作用域解构箭头函数

作用域

全局作用域——>尽量少使用,避免变量污染

局部作用域——>函数作用域、块级作用域

作用域链——>底层变量查找机制(先在当前函数作用域查找,如果找不到,就沿着作用域链向上级作用域查找,直到全局作用域)

闭包

概念:一个函数对周围状态的引用捆绑在一起,内层函数中访问到其外层函数的作用域

内存泄露:内存应该被回收却没有回收

闭包=内层函数+外层函数的变量

闭包的作用:

  1. 封闭数据,实现数据的私有,外部函数也可以访问函数内部的变量
  2. 闭包很有用,因为它允许将与其所操作的某些数据环境关联起来

闭包可能引起的内存泄露问题

function count() {let i = 0function fn() {i++console.log(`函数被调用了${i}次`)}return fn}const fun = count()

变量提升

使用var关键字声明变量会有变量提升,所有var声明的变量提升到 当前作用域的最前面

变量提升流程:

1.先把var变量提升到当前作用域于最前面

2.只提升变量声明,不提升变量赋值

3.然后依次执行代码

    function fn() {console.log(num)var num = 10}fn()

不建议使用var声明变量

函数提升

会把所有函数声明提升到当前作用域前面

只提升声明,不提升函数调用

fn()
function fn() {console.log('函数提升')
}//函数提升后
/*function fn() {console.log('函数提升')
}
fn()*/
fun()
var fun = function () {console.log('函数表达式')
}// 函数表达式 必须先声明和赋值, 后调用 否则 报

 函数动态参数

arguments 动态参数 只存在 函数里面
是伪数组 里面存储的是传递过来的实参

function getsum() {let sum = 0for (let i = 0; i < argumrnts.length; i++) {sum += arguments[i]}console.log(sum)
}
getsum(5, 6, 7)

箭头函数

//标准格式
const fn = () => {}
fn()//写在一行上,可省略大括号
const fn = () => console.log(11)
fn() //11//传参只有一个数时,可省略括号
const fn = e => console.log(e)
fn(1) //1//只有一行代码时,可省略return
const fn = e => e + e
console.log(fn(1))  //2//箭头函数可以直接返回一个对象
const fn = (uname) => ({name: uname})
console.log(fn('陈xx'))

普通函数有arguements动态参数

箭头函数没有arguements动态参数,但可以使用剩余参数(...arr)

在开发中【使用箭头函数前需要考虑函数中 this 的值】,事件回调函数使用箭头函数时,this 为全局的 window,因此 DOM事件回调函数为了简便,还是不太推荐使用箭头函数

对象结构

const goods = [{goodsName: '小米',price: 1999}
]
const [{goodsName, price}] = goods
console.log(goodsName)
console.log(price)

多级对象结构

const pig = {name: '佩奇',family: {mother: '猪妈妈',father: '猪爸爸',sister: '乔治'},age: 6
}
// 多级对象解构
const { name, family: { mother, father, sister },age } = pig
console.log(name)
console.log(mother)
console.log(father)
console.log(sister)
console.log(age)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/88795.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/88795.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Arduino 无线通信实战:使用 RadioHead实现 315MHz 433M模块数据传输

本文将介绍如何使用 Arduino 和 RadioHead 库实现 315MHz&#xff08;或 433MHz&#xff09;ASK 无线通信。通过两个 Arduino 控制板&#xff0c;一个作为发射端&#xff0c;一个作为接收端&#xff0c;实现“按键控制 → 无线发送 → LED 控制”的基础通信功能&#xff0c;非常…

012_PDF处理与文档分析

PDF处理与文档分析 目录 PDF支持概述支持的功能文档限制上传方式分析能力应用场景最佳实践 PDF支持概述 核心能力 Claude现在可以直接处理PDF文档&#xff0c;提供全面的文档分析能力。这项功能支持&#xff1a; 文本内容分析&#xff1a;提取和理解PDF中的文本图像识别&…

系规备考论文:论IT服务知识管理

论IT服务知识管理 摘要 2022年7月,我公司中标某市化工厂网络视频监控管理系统综合平台运维服务项目,并任命我为系统规划与管理师。该项目组织结构为项目型,合同金额为115.5万元(含税),工期为1年。本运维服务项目的主要工作包括系统软件和网络设备的日常监控与维护,定期…

2025.7.12总结

最近又两三天没写总结了&#xff0c;如今必须要写一稿&#xff0c;毕竟事关赚钱认知的一次颠覆。在我原有的认知里&#xff0c;赚钱&#xff0c;就是通过出卖自己的劳动时间&#xff0c;精力&#xff0c;给他人提供价值输出。但是&#xff0c;赚钱&#xff0c;只能通过出卖体力…

把 DNA 当 PCIe:一条 365 nt 链实现 64 Gbps 片上光互连——基于链式 Förster 共振的分子级波分复用链路

作者 | Blossom.118 2025-07-13 关键词&#xff1a;DNA 光子学、FRET 波分复用、分子 PCIe、零能耗光链路、CMOS 兼容、开源版图 ---- 1. 为什么用 DNA 做光互连&#xff1f; • 带宽密度&#xff1a;硅光 1 m 波导最高 0.4 Tbps/mm&#xff1b;一条 2 nm 直径的 DNA 双链&am…

[论文阅读]Text Compression for Efficient Language Generation

Text Compression for Efficient Language Generation [2503.11426] Text Compression for Efficient Language Generation NAACL 2025 提出了“Generative Pretrained Thoughtformer”&#xff08;GPTHF&#xff09;&#xff0c;这是一个分层 transformer 语言模型&#xf…

SwiftUI 7 新 WebView:金蛇出洞,网页江湖换新天

概述 崇祯年间&#xff0c;华山派武学虽盛&#xff0c;却在应对江湖新局时渐显颓势&#xff1b;如今 SwiftUI 江湖亦是如此 ——WWDC 25 之前&#xff0c;若要在 SwiftUI 中显示网页&#xff0c;开发者恰似袁承志初闯江湖&#xff0c;纵有一身本领&#xff0c;却苦无称手兵刃。…

LeetCode|Day9|976. 三角形的最大周长|Python刷题笔记

LeetCode&#xff5c;Day9&#xff5c;976. 三角形的最大周长&#xff5c;Python刷题笔记 &#x1f5d3;️ 本文属于【LeetCode 简单题百日计划】系列 &#x1f449; 点击查看系列总目录 >> &#x1f4cc; 题目简介 题号&#xff1a;976. 三角形的最大周长 难度&#x…

华擎B150M Pro4S魔改bios上8代U

100、200系主板魔改bios在DIY领域当属于历史性事件&#xff0c;2018年左右兴起。虽然现在已经是2025年&#xff0c;魔改bios已经没有多大意义&#xff0c;但是跟着前辈的教程魔改一次&#xff0c;可以重温下当年DIY玩家的激情。 魔改教程在SMXDIY网站&#xff0c;写的非常详细&…

音视频学习(三十七):pts和dts

概念 PTS&#xff08;Presentation Time Stamp&#xff09;显示时间戳 表示&#xff1a;该帧应该在什么时间被显示/播放。主要用于&#xff1a;同步音频与视频&#xff0c;控制播放节奏。举例&#xff1a;视频帧 A 的 PTS 是 300ms&#xff0c;表示应在视频播放第 300 毫秒时显…

关于数据库的慢查询

1.数据库的慢查询慢查询是指执行时间超过预设阈值的数据库查询操作。它是数据库性能优化的一个重要指标和切入点。慢查询的主要特点执行时间长&#xff1a;超过了数据库系统设定的慢查询阈值&#xff08;如MySQL默认是10秒&#xff09;资源消耗大&#xff1a;可能占用大量CPU、…

【Rust日报】 Python 核心开发者对 Rust 的期望

半月刊&#xff1a;The Embedded Rustacean Issue #49亮点&#xff1a;&#x1f4e2; 乐鑫 DevCon 2025 演讲嘉宾征集&#x1f9ba; CISA 和 NSA 参与内存安全对话&#x1f510; 微软宣布 RIFT &#xff08;Rust 恶意软件分析工具&#xff09;&#x1f4b0;️ Nordic 收购 Memf…

vue是什么

Vue简介Vue&#xff08;Vue.js&#xff09;是一个用于构建用户界面的渐进式JavaScript框架。它专注于视图层&#xff0c;易于集成到现有项目中&#xff0c;也可用于开发复杂的单页面应用&#xff08;SPA&#xff09;。Vue的核心特点是轻量、灵活和高效&#xff0c;通过数据绑定…

10分钟掌握 Nginx 配置文件结构

在实际部署前端或后端项目时&#xff0c;Nginx 配置文件&#xff08;nginx.conf&#xff09; 是我们无法绕开的第一道门槛。 本文将带你用10分钟掌握 nginx.conf 的核心结构与常见配置方法&#xff0c;并提供一篇完整的实战文档链接&#xff0c;适合初学者快速掌握。 &#x1…

典型的前后端交互数据示例

提供几种典型的前后端交互数据示例&#xff1a; 前端如何组织数据&#xff0c;以及后端如何接收数据。 文章目录1. POST请求后端实体类接收前端js后端接收结果查看2. GET请求后端实体类接收前端js后端接收结果查看3. GET请求后端基本类型接收前端js后端接收结果查看1. POST请求…

计算机毕业设计springboot影视周边推荐系统 基于SpringBoot的电影衍生品智能推荐平台 JavaWeb实现的影视文化周边个性化服务系统

计算机毕业设计springboot影视周边推荐系统6c31q9 &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。疫情之后&#xff0c;线上娱乐需求激增&#xff0c;人们对电影及其衍生商品的关…

(4)机器学习小白入门YOLOv :图片标注实操手册

(1)机器学习小白入门YOLOv &#xff1a;从概念到实践 (2)机器学习小白入门 YOLOv&#xff1a;从模块优化到工程部署 (3)机器学习小白入门 YOLOv&#xff1a; 解锁图片分类新技能 (4)机器学习小白入门YOLOv &#xff1a;图片标注实操手册 (5)机器学习小白入门 YOLOv&#xff1a;…

【JMeter】调试方法

文章目录取样器&#xff1a;发送请求、接收响应>>察看结果树断言&#xff1a;验证响应>>察看结果树提取器&#xff1a;创建变量>>调试取样器自定义断言&#xff1a;代码>>日志了解JMeter的内部细节&#xff0c;排查错误的原因。取样器&#xff1a;发送…

Vue框架之钩子函数详解

Vue框架之生命周期主要钩子函数详解一、Vue生命周期的整体流程二、创建阶段&#xff1a;初始化组件实例2.1 beforeCreate&#xff1a;实例创建前2.2 created&#xff1a;实例创建后三、挂载阶段&#xff1a;组件与DOM结合3.1 beforeMount&#xff1a;挂载前3.2 mounted&#xf…

Syntax Error: TypeError: Cannot set properties of undefined (setting ‘parent‘)

Date: 2025-07-12 19:21:24 author: lijianzhan使用npm run dev运行前端项目时报错&#xff0c;具体报错信息如下&#xff1a; ERROR Failed to compile with 1 error …