JS复习练习题目、完整nodejs项目以及Commons、Es
### JS复习练习
- 
1. 任务1:创建一个简单的问候函数
- 编写一个函数greet,接受一个名字作为参数,并返回一个问候语,例如:“Hello, [名字]! Welcome to JavaScript.”。
```js
function greet(name){
return `Hello,${name}! Welcome to JavaScript`
}
console.log('===============创建简单的问候函数 =================');
console.log(greet('李华'));
```
2. 任务2:计算数组的平均值
- 编写一个函数calculateAverage,接受一个数字数组作为参数,并返回数组的平均值。
```js
function calculateAverage(arr) {
let sum = 0
arr.forEach(x => {
sum += x
});
let ave = sum / arr.length
return ave;
}
console.log('===============计算数组的平均值 =================');
console.log(calculateAverage([1,2,3,4,5]))
// 第二种方法【reduce】
function calculateAverage02(array) {
const sum = array.reduce((x,y) => (x + y),0) /array.length
return sum
}
console.log(calculateAverage02([1,2,3,4,5]));
```
3. 任务3:检查字符串是否为回文
- 编写一个函数isPalindrome,接受一个字符串作为参数,判断该字符串是否为回文(正读和反读相同)。
```js
function isPalindrome(Str){
// 清理字符串,都变成小写,不要空字符 【 .toLowerCase(); 】
const One = Str.replace(/[^a-zA-Z0-9]/g,'').toLowerCase() // g 代表全局匹配,如果没有的话,默认为查找第一个字符
// 反读 【split()把字符串拆分成数组】【reverse()反转】【join('')把数组重新拼接成字符串】
const Two = One.split('').reverse().join('')
if (One === Two) {
console.log('是回文');
}
else{
console.log('不是回文');
}
}
console.log('===============检查字符串是否为回文 =================');
isPalindrome('alrla')
isPalindrome('abcd')
```
4. 任务4:实现一个简单的计数器
- 使用闭包实现一个简单的计数器,每次调用时返回当前的计数值。
```js
// 闭包:让内部函数能够访问并修改外部函数的作用域中的变量
// 定义一个外部函数
function A(){
let number = 0
// AA 函数的参数 number 不能与外部变量同名,会导致作用域冲突。
// 去掉参数后,AA 函数可以直接访问和修改外部的 number,从而实现闭包的效果。
function AA(){
number ++
// 返回当前值
return number
}
// 返回内部函数的值,让外部可以调用
return AA;
}
console.log('===============闭包=================');
const counts = A()
console.log(counts());
console.log(counts());
console.log(counts());
```
5. 任务5:过滤数组中的偶数
- 编写一个函数filterEvenNumbers,接受一个数字数组作为参数,返回一个只包含偶数的新数组。
```js
function filterEvenNumbers(ArrayList) {
console.log("==============过滤数组中的偶数 =================");
const NewAL = ArrayList.filter(item => item % 2 ==0 )
console.log(NewAL);
}
filterEvenNumbers([1,2,3,4,5,6]);
```
6. 任务6:实现一个简单的对象工厂
- 编写一个函数createPerson,接受name和age作为参数,返回一个包含这些属性的对象。
```js
function createPerson(Name,Age) {
const Obj = {Name,Age}
return Obj
}
console.log("============== 简单的对象工厂 =================");
console.log(createPerson('翠花',18));
```
7. 任务7:递归计算阶乘
- 编写一个递归函数factorial,计算一个非负整数的阶乘。
```js
// 阶乘的定义是:
// n!=n×(n−1)×(n−2)×⋯×1
// 0!=1
function factorial(Num){
if (Num == 0) {
return 1
}
else{
// factorial(Num-1) 是一个递归调用,而不是直接的数值。它的作用是计算 Num-1 的阶乘,然后将结果乘以当前的 Num。
return Num * factorial(Num-1)
}
}
function factorial02(Num){
// 【三元运算符】 条件表达式 ? 表达式1 : 表达式2
return Num == 0 ? 1 : Num * factorial02(Num - 1)
}
console.log("============== 递归计算阶乘 =================");
console.log(factorial(4));
console.log(factorial02(4));
```
8. 任务8:实现一个简单的事件监听器
- 编写一个函数addEventListener,模拟HTML元素的事件监听器功能。接受一个事件类型和一个回调函数作为参数,并在触发时调用回调函数。
```js
console.log("============== 事件监听器 =================");
function addEventListene(event,callback){
function even(){
console.log(`这个${event}被触发了`);
callback()
}
even()
}
addEventListene('click',function(){})
console.log("============== 实现简单的模块 =================");
```
9. 任务9:实现一个简单的模块
- 使用模块模式封装一个mathUtils模块,包含add和multiply两个函数
```js
const mathUtils = (function(){
function add(a,b){
return a+b
}
function multiply(a,b){
return a*b
}
return{add,multiply}
})()
console.log(mathUtils.add(1,2));
console.log(mathUtils.multiply(1,2));
console.log("============== 实现Promise =================");
```
10. 任务9:实现一个简单的Promise
- 使用Promise实现一个异步函数fetchData,模拟从服务器获取数据。如果成功,返回一个字符串;如果失败,抛出一个错误。
```js
function fetchData(){
return new Promise((resolve,reject)=>{
const aa = true
if (aa) {
resolve('获取成功');
}
else{
reject(new Error('获取失败'))
}
})
}
fetchData().then(x=>console.log(x))
```
### 创建完整nodejs项目
- package.json
```json
{
"name":"Demo01",
"main": "app.js",
"scripts": {
"rr":"node app.js"
},
"dependencies": {
"koa":"latest"
}
}
```
- npm i 安装依赖
- npm run rr 跑起来
- 
### CommonJS 与 ES Modules 的区别及常规用法
1. CommonJS:是一种模块化规范,主要用于 Node.js 环境。它通过 require 和 module.exports 实现模块的导入和导出。
- 代码
```js
导出模块
// setting.js
function fn() {
console.log('我是CommonJS');
}
function fn01() {
console.log('我尝试一下');
}
module.exports = { fn, fn01 };
导入模块
// app.js
const abc = require('./setting');
abc.fn(); // 输出: 我是CommonJS
abc.fn01(); // 输出: 我尝试一下
```
2. ES Modules:是 JavaScript 的原生模块化规范,适用于浏览器和 Node.js(需配置支持)。它通过 import 和 export 实现模块的导入和导出。
- 支持动态导入:通过 import() 返回一个 Promise,支持按需加载。
- (需配置 "type": "module" 或使用 .mjs 文件扩展名)。
- 代码
```js
导出模块
// abc.mjs
export function fnA() {
console.log('我是ES');
}
export const arr = [1, 2, 3, 4, 5, 6];
导入模块
// app.mjs
let abc = await import ('./abc.mjs')
abc.fnA() // 输出: 我是ES
console.log(abc.arr) // 输出: [1, 2, 3, 4, 5, 6]
```
#### CommonJS 与 ES Modules 的区别
| 特性 | CommonJS | ES Modules |
|------------------|-----------------------------------------------|-------------------------------------------------|
| **加载方式** | 同步加载,运行时解析依赖 | 静态分析,编译时解析依赖 |
| **导入语法** | 使用 `require()` | 使用 `import` 和 `export` |
| **动态加载支持** | 不支持 | 支持(通过 `import()`) |
| **运行时性能** | 稍低(动态解析) | 较高(静态优化) |
| **作用域** | 模块私有作用域,模块导出的内容会被缓存 | 导入的是活的绑定,模块内部值变化会反映到导入处 |
| **适用环境** | 主要用于 Node.js | 适用于浏览器和 Node.js |
| **文件扩展名** | 默认 `.js` | 需 `.mjs` 或配置 `"type": "module"` |
## 注意事项
### 文件扩展名
- 如果使用 ES Modules,文件扩展名需为 `.mjs`,或在 `package.json` 中配置 `"type": "module"`。
- CommonJS 默认使用 `.js` 扩展名。
### 运行环境
- **CommonJS** 是 Node.js 的传统模块系统,适合服务器端开发。
- **ES Modules** 是现代 JavaScript 的模块化标准,适用于浏览器和 Node.js,支持静态分析和动态导入。
相关文章:
JS复习练习题目、完整nodejs项目以及Commons、Es
### JS复习练习 -  1. 任务1:创建一个简单的问候函数 - 编写一个函数greet,接受一个名字作为参数,并返回一个问候语,例如:“Hello, [名字]! Welcome to Jav…...

Linux:理解O(1)调度算法的设计精髓
目录 一、从厨房看调度器本质 二、O(1)算法的核心架构 1.时间复杂度的革命 2.动态优先级魔法 三、算法运行的全景图 1.时间片分配策略 2.上下文切换的艺术 前言:前面文章提到关于并发的概念,并发针对的是单核的CPU上同时运行很多情况,…...

[C++][cmake]使用C++部署yolov12目标检测的tensorrt模型支持图片视频推理windows测试通过
最近悄悄出了yolov12框架,标志着目标检测又多了一个检测利器,于是尝试在windows下部署yolov12的tensorrt模型,并最终成功。 重要说明:安装环境视为最基础操作,博文不做环境具体步骤,可以百度查询对应安装步…...

Uppy - 免费开源、功能强大的新一代 web 文件上传组件,支持集成到 Vue 项目
Uppy 这个优质的前端组件,可以解决几乎所有的文件上传问题,最近发布了 TS 重写的 4.0 新版本,实用性更强了。 Uppy 是一个 UI 外观时尚、模块化的 JavaScript 文件上传组件,这个组件可以与任何 web 技术栈集成,不仅轻…...

【游戏——BFS+分层图】
题目 分析 但凡是最优方案可能需要访问同一个点的情况,都需要应用“拆点”,或者说分层图的技巧。多出来的维度主要是区分同一个点的不同状态而用。 对于本题,访问的时机便是一个区分点。 对于类似题“AB路线”,同一个K段的位置是…...

SSL 证书是 SSL 协议实现安全通信的必要组成部分
SSL证书和SSL/TLS协议有着密切的关系,但它们本质上是不同的概念。下面是两者的区别和它们之间的关系的表格: 属性SSL/TLS 协议SSL证书英文全称SSL(Secure Sockets Layer),TLS(Transport Layer Security&am…...
Spring 源码硬核解析系列专题(七):Spring Boot 与 Spring Cloud 的微服务源码解析
在前几期中,我们从 Spring 核心的 IoC、AOP、事务管理,到 Spring Boot 的自动装配,逐步揭示了 Spring 生态的底层原理。随着微服务架构的流行,Spring Boot 结合 Spring Cloud 成为了构建分布式系统的主流选择。本篇将深入 Spring Cloud 的核心组件,以服务注册与发现(Eure…...

嵌入式开发:傅里叶变换(5):STM32和Matlab联调验证FFT
目录 1. MATLAB获取 STM32 的原始数据 2. 将数据上传到电脑 3. MATLAB 接收数据并验证 STM32进行傅里叶代码 结果分析 STM32 和 MATLAB 联调是嵌入式开发中常见的工作流程,通常目的是将 STM32 采集的数据或控制信号传输到 MATLAB 中进行实时处理、分析和可视化…...

C# 根据Ollama+DeepSeekR1开发本地AI辅助办公助手
在上一篇《访问DeepSeekR1本地部署API服务搭建自己的AI办公助手》中,我们通过通过Ollama提供的本地API接口用Python实现了一个简易的AI办公助手,但是需要运行Py脚本,还比较麻烦,下面我们用C#依据Ollama提供的API接口开发一个本地A…...

洛谷 P8705:[蓝桥杯 2020 省 B1] 填空题之“试题 E :矩阵” ← 卡特兰数
【题目来源】 https://www.luogu.com.cn/problem/P8705 【题目描述】 把 1∼2020 放在 21010 的矩阵里。要求同一行中右边的比左边大,同一列中下边的比上边的大。一共有多少种方案? 答案很大,你只需要给出方案数除以 2020 的余数即可。 【答案提交】 …...

我的AI工具箱Tauri版-FluxCharacterGeneration参考图像生成人像手办(Flux 版)
本教程基于自研的AI工具箱Tauri版进行ComfyUI工作流FluxCharacterGeneration参考图像生成人像手办(Flux 版)。 我的AI工具箱Tauri版 - FluxCharacterGeneration参考图像生成人像手办(Flux版) 基于先进的FLUX模型,通过…...

DeepSeek开源周Day2:DeepEP - 专为 MoE 模型设计的超高效 GPU 通信库
项目地址:https://github.com/deepseek-ai/DeepEP 开源日历:2025-02-24起 每日9AM(北京时间)更新,持续五天 (2/5)! 引言 在大模型训练中,混合专家模型(Mixture-of-Experts, MoE)因其动…...
51单片机-串口通信编程
串行口工作之前,应对其进行初始化,主要是设置产生波特率的定时器1、串行口控制盒中断控制。具体步骤如下: 确定T1的工作方式(编程TMOD寄存器)计算T1的初值,装载TH1\TL1启动T1(编程TCON中的TR1位…...

python实现基于文心一言大模型的sql小工具
一、准备工作 注册与登录: 登录百度智能云千帆控制台,注册并登录您的账号。 创建千帆应用: 根据实际需求创建千帆应用。创建成功后,获取AppID、API Key、Secret Key等信息。如果已有千帆应用,可以直接查看已有应用的AP…...

deepseek 导出导入模型(docker)
前言 实现导出导入deepseek 模型。deepseek 安装docker下参考 docker 导出模型 实际生产环境建议使用docker-compose.yml进行布局,然后持久化ollama模型数据到本地参考 echo "start ollama" docker start ollama#压缩容器内文件夹,然后拷贝…...
前言:什么是大模型微调
一、大模型微调的基础知识 1. 什么是大模型微调? 大模型微调(Fine-tuning)是指在预训练模型的基础上,针对特定的任务或数据集进行进一步训练的过程。预训练模型通常在大规模的通用数据上训练,具备广泛的语言理解和生…...
TCPDF 任意文件读取漏洞:隐藏在 PDF 生成背后的危险
在网络安全的世界里,漏洞就像隐藏在黑暗中的“定时炸弹”,稍有不慎就会引发灾难性的后果。今天,我们要聊的是一个与 PDF 生成相关的漏洞——TCPDF 任意文件读取漏洞。这个漏洞可能让攻击者轻松读取服务器上的敏感文件,甚至获取整个…...

unity学习53:UI的子容器:面板panel
目录 1 UI的最底层容器:canvas 1.1 UI的最底层容器:canvas 1.2 UI的合理结构 2 UI的子容器:面板panel 2.1 创建panel 2.2 面板的本质: image ,就是一个透明的图片,1个空容器 3 面板的属性 4 面板的…...

水环境水质在线监测系统解决方案
在当今社会,水资源作为人类生存和发展的基础性资源,其质量的优劣直接关系到生态平衡、人类健康以及社会经济的可持续发展。然而,随着工业化、城市化的快速推进,各类污染物不断排入水体,导致水环境面临严峻挑战。水环境…...

HBuilder X中,uni-app、js的延时操作及定时器
完整源码下载 https://download.csdn.net/download/luckyext/90430165 在HBuilder X中,uni-app、js的延时操作及定时器可以用setTimeout和setInterval这两个函数来实现。 1.setTimeout函数用于在指定的毫秒数后执行一次函数。 例如, 2秒后弹出一个提…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...

C++实现分布式网络通信框架RPC(2)——rpc发布端
有了上篇文章的项目的基本知识的了解,现在我们就开始构建项目。 目录 一、构建工程目录 二、本地服务发布成RPC服务 2.1理解RPC发布 2.2实现 三、Mprpc框架的基础类设计 3.1框架的初始化类 MprpcApplication 代码实现 3.2读取配置文件类 MprpcConfig 代码实现…...
es6+和css3新增的特性有哪些
一:ECMAScript 新特性(ES6) ES6 (2015) - 革命性更新 1,记住的方法,从一个方法里面用到了哪些技术 1,let /const块级作用域声明2,**默认参数**:函数参数可以设置默认值。3&#x…...

Axure零基础跟我学:展开与收回
亲爱的小伙伴,如有帮助请订阅专栏!跟着老师每课一练,系统学习Axure交互设计课程! Axure产品经理精品视频课https://edu.csdn.net/course/detail/40420 课程主题:Axure菜单展开与收回 课程视频:...

2025 后端自学UNIAPP【项目实战:旅游项目】7、景点详情页面【完结】
1、获取景点详情的请求【my_api.js】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http(/login/getWXSessionKey, {code,avatar}); };//…...

SOC-ESP32S3部分:30-I2S音频-麦克风扬声器驱动
飞书文档https://x509p6c8to.feishu.cn/wiki/SKZzwIRH3i7lsckUOlzcuJsdnVf I2S简介 I2S(Inter-Integrated Circuit Sound)是一种用于传输数字音频数据的通信协议,广泛应用于音频设备中。 ESP32-S3 包含 2 个 I2S 外设,通过配置…...
ubuntu清理垃圾
windows和ubuntu 双系统,ubuntu 150GB,开发用,基本不装太多软件。但是磁盘基本用完。 1、查看home目录 sudo du -h -d 1 $HOME | grep -v K 上面的命令查看$HOME一级目录大小,发现 .cache 有26GB,.local 有几个GB&am…...
DOM(文档对象模型)深度解析
DOM(文档对象模型)深度解析 DOM 是 HTML/XML 文档的树形结构表示,提供了一套让 JavaScript 动态操作网页内容、结构和样式的接口。 一、DOM 核心概念 1. 节点(Node)类型 类型值说明示例ELEMENT_NODE1元素节点<div>, <p>TEXT_NODE3文本节点元素内的文字COMMEN…...