JavaScript 知识点(从基础到进阶)

🌏个人博客主页:心.c
前言:JavaScript已经学完了,和大家分享一下我的笔记,希望大家可以有所收获,花不多说,开干!!!
🔥🔥🔥专题文章:密码生成器
😽感谢大家的点赞👍收藏⭐️评论✍您的一键三连是我更新的动力 💓
目录
js的三种书写方式:
行内:
内部:
外部:
js的输入输出:
输入语法:
输入语法:
注释:
变量:
数组:
定义数组:
数组的增删改查:
数据类型:
基本数据类型:
引用数据类型:
数据转换:
隐式转换:
显示转换:
运算符:
算数运算符:
比较运算符:
逻辑运算符:
一元运算符:
函数:
函数声明:
函数表达式:
立即执行表达式:
箭头函数:
对象:
对象的创建:
对象增删改查:
js的三种书写方式:
行内:
<body><button onclick="alert('行内')"></button>
</body>
内部:
<body><script>alert('内部')</script>
</body>
外部:
外部js标签中间不能书写东西
<body><!-- 引用外部js --><script src="./01.js.html"></script>
</body>
js的输入输出:
输入语法:
页面打印:
document.write('页面打印')
控制台打印:
console.log('控制台打印')
弹出界面:
console.log('控制台打印')
输入语法:
prompt('请输入信息')
注释:
单行注释:
//我是单行注释
多行注释:
/*我是多行注释*/
变量:
变量是用来储存数据的容器,简单理解就是一个盒子
//声明并赋值一个年龄变量let age=18//输出alert(age)
//声明一个年龄变量let age//赋值age = 18//输出alert(age)
数组:
定义数组:
let arr = [1, 2, 3, 4, 5];
console.log(arr); // 输出 [1, 2, 3, 4, 5]
数组的增删改查:
增加元素:
push ( ) 向数组的末尾添加一个或多个元素
const arr = [1, 2, 3];
arr.push(4);
console.log(arr); // 输出 [1, 2, 3, 4]
unshift ( ) 向数组的开头添加一个或多个元素
const arr = [1, 2, 3];
arr.unshift(0);
console.log(arr); // 输出 [0, 1, 2, 3]
splice ( ) 可以在任意位置插入元素,并且可以同时删除元素。
const arr = [1, 2, 3];
arr.splice(1, 0, 1.5); // 在索引1的位置插入1.5
console.log(arr); // 输出 [1, 1.5, 2, 3]
删除元素:
pop()从数组的末尾移除一个元素,并返回该元素
const arr = [1, 2, 3];
const removed = arr.pop();
console.log(arr); // 输出 [1, 2]
console.log(removed); // 输出 3
shift()从数组的开头移除一个元素,并返回该元素。
const arr = [1, 2, 3];
const removed = arr.shift();
console.log(arr); // 输出 [2, 3]
console.log(removed); // 输出 1
splice()可以从数组中删除元素,并且可以同时插入元素。
const arr = [1, 2, 3, 4, 5];
arr.splice(1, 2); // 从索引1开始删除2个元素
console.log(arr); // 输出 [1, 4, 5]
修改元素:
可以直接通过索引访问和修改数组中的元素
const arr = [1, 2, 3];
arr[1] = 2.5;
console.log(arr); // 输出 [1, 2.5, 3]
查询元素:
返回数组中某个元素第一次出现的位置索引,如果不存在则返回-1
const arr = [1, 2, 3, 2, 4];
const index = arr.indexOf(2);
console.log(index); // 输出 1
数据类型:
基本数据类型:
基本数据类型是值类型,它们直接存储在栈内存中,而不是通过引用访问。当赋值给另一个变量时,复制的是具体的值,而不是引用。
1.number
表示数值,包括整数和浮点数。
let num = 42;
2.string
表示文本字符串。
let str = "Hello, world!";
3.boolean
表示逻辑值,只有
true和false两个值
let flag = true;
4.undifined
表示尚未赋值的变量或函数返回的未定义值。
let x;
console.log(x); // 输出 undefined
5.null
表示空值或空对象指针。
let nothing = null;
引用数据类型:
1.对象
对象是键值对的集合,是最常用的复合数据类型之一。对象可以包含属性(键值对)和方法(函数)。
let person = {name: "Alice",age: 30,sayHello: function() {console.log("Hello, my name is " + this.name);}
};
2.数组
数组是一种特殊的对象,用于存储有序的元素列表。数组的元素可以是任何类型的数据。
let numbers = [1, 2, 3, 4, 5];
let mixed = ["apple", 42, true, {name: "Alice"}];console.log(numbers[0]); // 输出 1
console.log(mixed[3].name); // 输出 "Alice"
3.函数
函数也是一种对象,可以作为值进行传递,并且可以作为对象的属性或方法。
function greet(name) {console.log("Hello, " + name + "!");
}
数据转换:
隐式转换:
console.log(11 + 11) //numberconsole.log('11' + 11) //stringconsole.log('111') //stringconsole.log(+'123') //numberconsole.log(+'123' + 132) //number
显示转换:
let str = '123'let num = Number(str) //numberlet num1 = +str //number
let num = 123let str = String(num) //stringlet str1 = num.toStrign() //string
运算符:
算数运算符:
| 运算符 | 描述 | 示例 |
|---|---|---|
+ | 加法 | 5 + 3 |
- | 减法 | 5 - 3 |
* | 乘法 | 5 * 3 |
/ | 除法 | 5 / 3 |
% | 取模(求余数) | 5 % 3 |
** | 幂运算(次方) | 2 ** 3 |
比较运算符:
| 运算符 | 描述 | 示例 |
|---|---|---|
== | 等于(值相等即可) | 5 == "5" |
=== | 严格等于(值和类型都相等) | 5 === "5" |
!= | 不等于 | 5 != 3 |
!== | 严格不等于 | 5 !== "5" |
< | 小于 | 5 < 3 |
> | 大于 | 5 > 3 |
<= | 小于等于 | 5 <= 5 |
>= | 大于等于 | 5 >= 5 |
逻辑运算符:
| 运算符 | 描述 | 示例 |
|---|---|---|
&& | 逻辑与(AND) | true && false |
| || | 逻辑或(OR) | true && false |
! | 逻辑非(NOT) | !true |
一元运算符:
++ | 前置/后置自增 | ++x 或 x++ |
-- | 前置/后置自减 | --x 或 x-- |
+ | 正号(强制转换为数字) | +5 |
- | 负号(取反) | -5 |
! | 逻辑非 | !true |
typeof | 获取变量的类型 | typeof x |
delete | 删除对象的属性 | delete obj.prop |
函数:
函数声明:
function greet(name) {console.log("Hello, " + name + "!");
}
函数表达式:
const greet = function(name) {console.log("Hello, " + name + "!");
};
立即执行表达式:
(function(name) {console.log("Hello, " + name + "!");
})("Charlie");
箭头函数:
const greet = (name) => {console.log("Hello, " + name + "!");
};
对象:
对象的创建:
使用字面量方式创建:
//定义对象let obj = {name: '阿伟',age: 12,phone: 12323232323}console.log(obj)
使用构造函数创建
const person = new Object();
2person.name = "Bob";
3person.age = 25;
对象增删改查:
增加属性:
使用标点:
const person = {};
person.name = "Alice";
person.age = 30;
使用括号:
const person = {};
person["name"] = "Alice";
person["age"] = 30;
修改属性:
const person = {name: "Alice",age: 30
};person.age = 31;
删除属性:
const person = {name: "Alice",age: 30
};delete person.age;
查找对象属性:
const person = {name: "Alice",age: 30
};const keys = Object.keys(person);
console.log(keys); // 输出 ["name", "age"]
const person = {name: "Alice",age: 30
};const values = Object.values(person);
console.log(values); // 输出 ["Alice", 30]
const person = {name: "Alice",age: 30
};const entries = Object.entries(person);
console.log(entries); // 输出 [["name", "Alice"], ["age", 30]]
遍历对象:
const person = {name: "Alice",age: 30,city: "New York"
};for (const key in person) {if (person.hasOwnProperty(key)) {console.log(`${key}: ${person[key]}`);}
}
// 输出
// name: Alice
// age: 30
// city: New York
到这里就讲完了,感谢大家的观看!!!
相关文章:
JavaScript 知识点(从基础到进阶)
🌏个人博客主页:心.c 前言:JavaScript已经学完了,和大家分享一下我的笔记,希望大家可以有所收获,花不多说,开干!!! 🔥🔥ǵ…...
计算机网络知识点复习——TCP协议的三次握手与四次挥手(连接与释放)
TCP协议的三次握手与四次挥手(连接与释放) 一、前言二、简单的知识准备1. TCP协议的主要特点2. TCP报文段 三、TCP连接的建立(三次握手)四、TCP连接的释放(四次挥手)五、TCP连接与释放的总结六、结束语 一、…...
SpringDataJPA系列(7)Jackson注解在实体中应用
SpringDataJPA系列(7)Jackson注解在实体中应用 常用的Jackson注解 Springboot中默认集成的是Jackson,我们可以在jackson依赖包下看到Jackson有多个注解 一般常用的有下面这些: 一个实体的示例 测试方法如下: 按照上述图片中的序号做个简…...
【Spring Boot 3】【Web】统一封装 HTTP 响应体
【Spring Boot 3】【Web】统一封装 HTTP 响应体 背景介绍开发环境开发步骤及源码工程目录结构总结背景 软件开发是一门实践性科学,对大多数人来说,学习一种新技术不是一开始就去深究其原理,而是先从做出一个可工作的DEMO入手。但在我个人学习和工作经历中,每次学习新技术总…...
Linux如何做ssh反向代理
SSH反向代理是一种通过SSH协议实现的安全远程访问方式,它允许客户端通过SSH连接到一台具有公网IP的代理服务器,然后这台代理服务器再将请求转发给内部网络中的目标主机。以下是实现SSH反向代理的步骤: 一、准备工作 确保服务器配置ÿ…...
Verilog语法+:和-:有什么用?
Verilog语法:和-:主要用于位选择,可以让代码更简洁。 一、位选择基础 在Verilog中,位选择可以通过直接索引来实现,例如: reg [7:0] data; wire select_a; wire [2:0] select_b; assign select_a data[3]; assign select_b …...
stm32F103 串口2 中断 无法接收指定字符串 [已解决]
stm32F103 串口2中断接收指定字符串 USART 初始化和中断配置示例中断处理函数示例关键点总结 确保在串口配置中正确使能空闲中断 ( USART_IT_IDLE) 是关键。这个中断可以帮助你在串口接收一帧数据完成后,进行相应的处理和分析。 为了确保你在串口配置时能避免类似问…...
Matlab/Simulink和AMEsim联合仿真(以PSO-PID算法为例)
目录 安装软件和配置环境变量 Matlab/Simulink和AMEsim联合仿真详细流程 非常重要的一点 Simulink模型和AMEsim模型用S-Function建立连接 从AMEsim软件打开Matlab Matlab里的设置 Matlab的.m文件修改(对于PSO-PID算法) 运行程序 我印象中好像做过…...
超声波测距模块HC-SR04(基于STM32F103C8T6HAL库)
超声波测距模块参考资料 1.电路连接及引脚配置 触发信号PA3只需要输出10us的高电平,所以直接设置成 普通的GPIO端口即可;回响信号使用外部中断,上升沿信号产生外部中断,打开定时器,下降沿再产生一次中断,读…...
Go语言结构体和元组全面解析
Go语言中的复合类型与其应用 在编程中,标准类型虽然方便,但无法满足所有需求。Go通过支持结构体和元组类型,为开发者提供了自定义数据类型的能力。本文将介绍如何定义结构体、如何使用指针操作结构体、如何通过元组返回多个值等内容…...
集成电路学习:什么是SDK软件开发工具包
SDK:软件开发工具包 SDK,即Software Development Kit(软件开发工具包),是一套由软件提供商或其他组织提供的开发工具集合。这些工具旨在帮助开发者更快速、更便捷地创建、测试和部署软件应用程序。以下是对SDK的详细解…...
java后端如何发送http请求
用java后端发送请求需要用到的一个工具包为HttpClient。HttpClient是Apache的一个子项目,是高效的、功能丰富的支持HTTP协议的客户端编程工具包。 引入依赖 <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId&…...
装WebVideoCreator记录
背景,需要在docker容器内配置WebVideoCreator环境,配置npm、node.js WebVideoCreator地址:https://github.com/Vinlic/WebVideoCreator 配置环境,使用这个教程: linux下安装node和npm_linux离线安装npm-CSDN博客 1…...
【编程底层思考】什么是GC Roots
在Java虚拟机(JVM)中,GC Roots是垃圾收集(Garbage Collection,GC)过程中的起点,用于确定对象是否可被回收。GC Roots集合是一组必须活跃的(即必须保留在内存中的)引用&am…...
[STL --stack_queue详解]stack、queue,deque,priority_queue,容器适配器
stack stack介绍 1、stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。 2、stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供…...
240907-Gradio插入Mermaid流程图并自适应浏览器高度
A. 最终效果 B. 示例代码 import gradio as grmermaid_code """ <iframe srcdoc <!DOCTYPE html> <html><head><meta charset"utf-8" /><meta name"viewport" content"widthdevice-width" />…...
ubuntu 安装python3 教程
本篇教程,主要介绍如何在Ubuntu上安装python3教程。 1、查看是否有python 在安装前,首先看看自己系统上,是否存在python环境,可能有些系统,默认就安装过python,如果已经有python了,可以直接跳过安装教程。 2、安装步骤 apt update && apt install -y python3 p…...
NOR Flash、NAND Flash……
存储类型描述Compact Flash一种用于便携式电子设备的数据存储设备,于1994年由SanDisk公司推出。SRAM静态随机存取存储器,不需要刷新电路即能保存数据,速度快但集成度低、功耗大。PSRAM伪静态随机存取存储器,结合了SRAM和DRAM的特点…...
【高性能代码】提高代码的性能有哪些方式,如何写出高性能代码,一段代码如何提高这段代码的执行性能,高性能代码开发
【高性能代码】提高代码的性能有哪些方式,如何写出高性能代码,一段代码如何提高这段代码的执行性能,高性能代码开发 提高代码的性能是软件开发中一个重要的方面,尤其是在处理大数据、高并发或实时性要求较高的应用时。以下是一些提…...
2024整理 iptables防火墙学习笔记大全_modepro iptables
Iptables名词和术语 2iptables表(tables)和链(chains) 2表及其链的功能 2 Filter表 2 NAT表 2 MANGLE表 2iptables的工作流程 3iptables表和链的工作流程图 3 二、 iptables实战应用 4iptables命令参数详解 4 iptable…...
stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...
C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...
什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?
Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...
C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...
脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)
一、OpenBCI_GUI 项目概述 (一)项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台,其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言,首次接触 OpenBCI 设备时,往…...
Ubuntu Cursor升级成v1.0
0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开,快捷键也不好用,当看到 Cursor 升级后,还是蛮高兴的 1. 下载 Cursor 下载地址:https://www.cursor.com/cn/downloads 点击下载 Linux (x64) ,…...
