2024/03/05 每日3题
问题1: 理解闭包,以及使用场景
闭包是一个重要的编程概念,它指的是在一个函数内部定义的函数能够访问其外部函数的词法作用域(包括变量和参数),即使外部函数已经执行结束并离开了作用域。换句话说,闭包允许一个函数继续访问其定义时的词法环境。
要理解闭包的概念,可以从以下几个方面来思考:
-
函数作用域: 在 JavaScript 中,每个函数都有自己的词法作用域,其中包含了在函数内定义的变量、函数和参数。这些变量和函数在函数执行时创建,并且在函数执行结束后会被销毁。
-
内部函数: JavaScript 允许在函数内部定义另一个函数,这个内部函数可以访问外部函数的作用域,即使外部函数已经执行结束。这种内部函数捕获了其定义时的词法作用域,形成了闭包。
-
词法作用域链: 当内部函数访问变量或函数时,JavaScript 引擎会先在内部函数的作用域中查找,如果找不到,就会沿着词法作用域链向外部作用域查找,直到找到变量或函数为止。
闭包在 JavaScript 中具有多种应用场景,包括但不限于:
- 实现模块化和封装:通过闭包可以创建私有变量和函数,实现模块化的代码结构。
- 保存状态:闭包可以用来保存函数执行时的状态,实现类似于对象的行为。
- 作为回调函数:闭包可以用作回调函数,可以访问包含它的外部函数的作用域。
问题2: 小程序,taro2升级taro3的差异,区别
1. 架构变化: Taro3采用了新的架构,底层调整了整个编译器的架构,从而提升了整体性能和稳定性
2. TypeScript 支持: Taro 3 对 TypeScript 的支持更加完善,包括编译性能优化、类型推导改进等,使得开发者在使用 TypeScript 时能够获得更好的体验。
3. 编译优化: Taro 3 对小程序和 H5 的编译优化进行了改进,提升了编译速度和整体性能。
4. 依赖更新: Taro 3 更新了内部依赖的版本,使得整体的依赖关系更加清晰和稳定。
5. 新功能特性: Taro 3 会引入一些新的功能特性,以满足开发者在多端开发中的需求,比如新的 API、组件等。
具体改动如下:
import { Component } from "@tarojs/taro"; // 改成 import { Component } from 'react';
// App 代码调整,对于 React/Nerv 项目,项目入口 App 的 render 函数固定修改为返回 this.props.children,如下 import { Component } from 'react' import './app.scss' class App extends Component { render() { return this.props.children } } export default App
问题3: 网络基础知识
-
网络的定义和分类: 网络是指连接在一起的多台计算机,使它们能够相互通信和共享资源。根据规模和范围的不同,网络可以分为局域网(LAN)、城域网(MAN)、广域网(WAN)、互联网等不同类型。
-
OSI 模型和 TCP/IP 协议栈: OSI(开放式系统互联)模型和 TCP/IP 协议栈是网络通信的两种主要参考模型。OSI 模型将网络通信分为七层,分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。TCP/IP 协议栈包括四层,分别是网络接口层、网络层、传输层和应用层。
-
IP 地址和子网掩码: IP 地址是网络上设备的标识符,用于唯一标识每个网络设备。子网掩码用于划分 IP 地址的网络部分和主机部分,以便于进行子网划分和寻址。
-
网络设备: 常见的网络设备包括路由器、交换机、集线器、网桥等。它们在网络中起着连接、转发、过滤、转换数据的作用。
-
网络拓扑结构: 网络拓扑结构是指网络中设备之间的物理连接方式,包括星型拓扑、总线拓扑、环形拓扑、树型拓扑、网状拓扑等,每种拓扑结构都有其特点和适用场景。
-
网络协议: 网络通信中常用的协议包括 TCP、UDP、IP、ICMP、ARP、HTTP、FTP、SMTP 等,它们规定了数据在网络中的传输格式、传输规则和通信过程。
-
网络地址转换(NAT): NAT 是一种在网络路由器上进行的地址转换技术,用于将私有 IP 地址转换为公有 IP 地址,以便局域网中的设备可以通过单一公网 IP 地址访问互联网。
-
数据传输原理: 数据在网络中的传输是通过数据包的方式进行的,每个数据包包含了源地址、目标地址、数据内容等信息,它们通过网络设备进行转发和交换,最终到达目标设备。
a. TCP vs UDP
b. HTTP vs TCP
c. HTTP vs HTTPS
d. 1.0 vs 2.0
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理