【前端教程】JavaScript 基础总结

JavaScript 的三种使用方式

  1. 内部引入(常用)
  2. 外部引入(一个 js 文件可以被多个页面共同使用)
  3. 行内(少用)

区别

  • 内部引入只能够使用单页面
  • 外部引入可以应用到多个页面
  • 行内是直接在 HTML 标签内写(少用)

JavaScript 执行顺序

HTML 代码是按照从上到下进行解释的。如果 JS 获取到网页中还没有进行解释的内容,就会出现 JS DOM 堵塞。

解决 JS 堵塞的方式有两种

  1. 将 JS 代码写在网页的最下面
  2. 使用 window.onload(网页加载完毕执行)

JS 错误处理

  • JS 代码一旦发生错误,错误后的代码将不会执行
  • 但不会影响发生错误前的代码执行

常用输出方法

alert("111"); // 警告框
prompt("请输入你的名称", "王菲"); // 提示对话框
console.log(value); // 用来进行调试,只能够在浏览器中进行调试
document.write("内容可以是普通文字和html代码,css样式");

调试方法

  1. 使用 alert() 去打印变量的值进行缩小范围调试
  2. 在浏览器中点击 F12 看错误信息

变量与数据类型

  • JS 中变量都是弱类型的,不管声明什么数据类型都使用 var 进行声明
  • 使用 typeof 关键字可以查看变量类型

强类型 vs 弱类型

  • 声明的类型确定死就是强类型
  • 声明的类型不确定就是弱类型

特殊值

  • 如果运算结果不是数字,也不是字符串,就得到 NaN(不是数字)

JS 中的 6 种数据类型

  1. number:所有的数字都属于 number,不管小数还是整数
  2. booleantruefalse
  3. string:可以使用 ""'' 进行声明,但不要混着用
  4. null:代表空
  5. undefined:声明了变量未赋值的空
  6. Object:所有引用数据类型的统称,包含元素节点,其他类型

浏览器选择

推荐使用谷歌(调试方便)或火狐浏览器(调试提示是中文的)

函数(方法)

函数是将具有特定功能的代码块封装为一个函数。JS 的函数分为系统函数和自定义函数。

自定义函数

定义函数语法
function 函数名(参数列表) {
// 函数体
}

调用时直接使用函数名。

函数表达式语法
var 变量名 = function(参数列表) {
// 函数体
}

调用时使用变量名。

注意

  • 不管有没有声明返回值,都可以返回,也可以不返回
  • 不管定义没有定义参数,都可以传参,也可以不传参

类型转换

Number(参数); // 转为数字类型
Boolean(参数); // 转为 Boolean 类型
需要转型的内容.toString(); // 转为字符串类型

参数

  • 形参:只是声明,没有具体的值,值需要通过调用时传入
  • 实参:具体传入的内容

实用函数

isNaN(内容); // 判断是不是非数值
arguments; // 参数过多时获取参数列表(返回数组形式)

数组

JS 中的数组创建使用 [],下标从 0 开始。由于 JS 是弱类型语言,数组可以放入任何类型。

创建数组的三种方式

  1. 隐式方式创建数组
var b = ['11', 22, '你好', ['大家好', 11]];
  1. 使用构造函数创建数组
var b = new Array('你好', 11, '快开学啦!');
  1. 使用下标索引给数组赋值
var v = new Array(2); // 数组的默认长度为2
v[0] = '你好很好';
v[1] = 11;
v[2] = '快开学啦';

数组遍历

  1. for 循环
for(var i = 0; i < v.length; i++) {
document.write(v[i] + "<br>");
}
  1. for…in
for(var i in v) {
document.write(i + "<br>");
}
  1. for…of
for(var i of v) {
document.write(i + "<br>");
}

二维数组

var v = [["张三","李四"], ["王五","马六"], ["秦叔宝","尉迟恭"]];// 遍历二维数组
for(var i of erwei) {
for(var j of i) {
document.write(j + "<br>");
}
}

对象

创建对象的两种方式

  1. 直接创建
var v = {'bianhao':1, 'name':'香蕉', 'price':3, 'num':3};
  1. 使用 new 创建
var v1 = new Object();
v1.bianhao = 2;
v1.name = '橘子';
v1.price = 4;
v1.num = 2;

对象方法

v1.gongneng = function() {
alert(内容);
}

访问对象属性和方法

对象名称['属性的键'] 或 对象名称.属性的键

修改对象属性

v["name"] = "王五"; 或 v.name = "王五";

删除对象属性

delete 对象的属性名;

遍历对象

for(var i in a) {
document.write(a[i]);
}

构造函数

JS 的构造函数和普通函数创建类似,主要的区别在于 JS 构造方法用于创建对象。

Math 对象

Math.abs(e); // 取 e 的绝对值
Math.ceil(e); // 向上取整
Math.floor(e); // 向下取整
Math.PI; // 圆周率
Math.pow(a, b); // 得到 a 的 b 次方
Math.sqrt(e); // 得到 e 的平方根
Math.random(); // 得到 0-1 之间的随机数

Date 对象

创建 Date 对象

var dt = new Date(); // 当前时间
var dt1 = new Date("1999-11-11"); // 指定时间
var dt2 = new Date("2003/08/22"); // 指定时间
var dt3 = new Date(2008, 7, 11); // 月份需要+1
var dt4 = Date.now(); // 当前时间的毫秒数

常用方法

getYear(); // 得到年份(需要加1900)
getFullYear(); // 直接得到年份
getMonth(); // 月份(记得+1)
getDate(); // 获取日
getDay(); // 周几(0-6,0代表周日)
getHours(); // 小时
getMinutes(); // 分钟
getSeconds(); // 秒
toDateString(); // 英文格式的日期
toLocalString(); // 数字格式的日期
toTimeString(); // 只有时间,没有年月日
valueOf(); // 将时间转为毫秒数
new Date(毫秒); // 将毫秒数转为时间

三目表达式

xiaoshi > 12 ? panduan = "下午" : panduan = "上午";
var month1 = month > 10 ? (month + 1) : "0" + (month + 1);

定时器

setInterval(code, millisec); // 周期性执行
clearInterval(); // 清除 setInterval
setTimeout(); // 只执行一次

String 对象

声明方式

  1. 直接声明
var str = "123"; // string 类型
  1. 构造器声明
var str1 = new String("你好"); // 引用类型

字符串特性

字符串具有不可变性:可以通过下标访问,但不能通过下标修改。

常用方法

length; // 字符串长度
charAt(a); // 下标为 a 的字符
concat(a, b, c...); // 连接字符串
indexOf(a); // 返回 a 的第一个位置(未找到返回-1)
lastIndexOf(a); // 从后往前找 a 的位置(未找到返回-1)
replace(a, b); // 用 b 替换 a
slice(a, b); // 截取 a 到 b 的位置
split("a"); // 以 "a" 分割字符串
substr(a, b); // 从 a 截取 b 个字符

事件

onclick; // 点击事件
onmouseover; // 鼠标移入
onmouseout; // 鼠标移出
onfocus(); // 获取焦点
onselect(); // 选中文本内容
onblur(); // 失去焦点
onchange(); // 内容改变
onload(); // 网页加载完毕
onunload(); // 网页刷新或关闭
(); // 网页刷新或关闭
onkeyup(); // 键盘松开

事件绑定方式

  1. 直接在元素上写属性事件
<input type="button" value="计算结果" onclick="sure()" id="btn1" />
  1. 使用 JS 代码动态赋值事件
var btn1 = document.getElementById("btn1");
btn1.onclick = function() {
alert("123");
}

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

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

相关文章

学习-XMind 思维导图

XMind 是 2006 年诞生的思维导图软件&#xff0c;全球超 1 亿用户&#xff0c;能可视化呈现复杂信息&#xff0c;适用于学习、工作场景。它功能全&#xff08;支持多图表结构&#xff09;、易操作、颜值高、跨平台且安全&#xff0c;因此受青睐。其界面有菜单栏&#xff08;含各…

Ubuntu下MySQL、MongoDB与Redis:从安装到协同的完整指南

目录 一、MySQL&#xff1a;稳定可靠的关系型数据库 1.1 安装与配置 1.2 性能优化实战 二、MongoDB&#xff1a;灵活的文档数据库 2.1 安装与配置 2.2 性能优化策略 三、Redis&#xff1a;高性能内存数据库 3.1 安装与配置 3.2 高级应用场景 四、协同实战&#xff1a…

【传奇开心果系列】Flet框架带图标带交互动画的办公用品费用占比统计饼图自定义模板

Flet带图标带交互动画的办公用品费用占比统计饼图自定义模板 一、效果展示GIF动图 二、应用场景介绍 三、 特色说明 四、小结 五、源码下载地址 一、效果展示GIF动图 二、应用场景介绍 该应用是一个基于 Flet 框架开发的交互式办公用品费用占比统计饼图。适用于以下场景: 企业…

docker镜像在containerd为底座的k8s中使用

docker镜像和container镜像为什么不能直接共通 Docker 镜像和 containerd 镜像本质上格式兼容&#xff08;都遵循 OCI 镜像规范&#xff09;&#xff0c;但默认情况下 “不能互相识别”&#xff0c;核心原因是存储位置、命名空间和工具链的隔离&#xff0c;而非镜像格式本身的差…

Java-反射机制

在 Java 编程中&#xff0c;“反射” 是一个贯穿基础与进阶的核心概念&#xff0c;它允许程序在运行时动态获取类的结构、调用方法、操作属性&#xff0c;甚至创建对象 —— 无需在编译期明确知道类的具体信息。一、反射是什么&#xff1f;首先明确一个关键定义&#xff1a;Jav…

ARM相关的基础概念和寄存器

目录 1、机器码 2、汇编指令 3、汇编指令集 4、架构 5、内核&#xff08;CPU中的核心&#xff09; 6、处理器 7、复杂指令集和精简指令集 7.1复杂指令集 7.2精简指令集 7.3修改 8、内核中的寄存器阻值 8.1溜达存储类型 8.2、AMR处理器&#xff08;内核&#xff09…

PPT处理控件Aspose.Slides教程:在 C# 中将 PPTX 转换为 Markdown

将您的PowerPoint幻灯片转换为Markdown格式&#xff0c;使其兼容 AI 技术。在这个人工智能驱动的时代&#xff0c;GPT和Claude等大模型能够读取和生成基于 Markdown 的内容。此外&#xff0c;Markdown 还可用于博客文章和文档。因此&#xff0c;作为一名 .NET 开发人员&#xf…

Python 多进程(multiprocessing)

文章目录1. 多进程概述1.1. 多进程的概念1.2. 多进程注意事项2. 进程调用方式2.1. Process 类2.1.1. 构造方法2.1.2. 实例方法2.1.3. 属性2.2. 面向过程2.3. 面向对象3. 进程间通讯3.1. Queues3.2. Pipes3.3. Managers&#xff08;进行共享数据&#xff09;4. 进程同步5. 进程池…

推荐系统王树森(五)重排多样性提升

重排01&#xff1a;物品相似性的度量、提升多样性的方法_哔哩哔哩_bilibili github-PPT 前面的讨论中提到 在链路的最后进行重排&#xff0c;重排要插入广告和运营笔记&#xff0c;还要做规则打散&#xff0c;提高推荐的丰富性&#xff0c;比如说一个人特别爱看足球&#xff…

Axios多实例封装

Axios多实例封装方案 我将为您提供一个完整的Axios多实例封装方案&#xff0c;包含基础封装、多实例管理和使用示例。 设计思路 创建基础axios实例封装&#xff0c;支持请求/响应拦截器实现多实例管理器&#xff0c;支持不同API端点配置提供统一的错误处理机制支持请求取消功…

为量化从业者提供免费稳定的股票数据源:免费股票数据API获取实时数据、历史数据与技术指标(含多语言代码指南)实例代码演示与API文档说明

​ 近年来&#xff0c;股票量化分析因其科学、系统的研究方法&#xff0c;日益成为市场热点。而进入这一领域的首要步骤&#xff0c;正是获取全面、准确的股票数据——无论是实时交易行情、历史走势记录&#xff0c;还是企业财务与基本面信息&#xff0c;都是支撑量化策略的核心…

[Sync_ai_vid] UNet模型 | 音频特征提取器(Whisper)

第2章&#xff1a;LatentSync UNet模型 在第1章&#xff1a;唇形同步推理流程中&#xff0c;我们了解到唇形同步推理流程如同电影导演&#xff0c;协调各"专家模块"生成完美唇形同步视频。 本章将深入解析这个"工作室"中最核心的专家——LatentSync UNet…

工业级TF卡NAND + 北京君正 + Rk瑞芯微的应用

目录前言一&#xff1a;操作CS创世 SD NAND的常用命令1.查看SD设备2.挂载分区3.卸载分区4.分区管理5.格式化分区6.简单读写二&#xff1a;SD底层协议简要介绍三&#xff1a;对CS创世 SD NAND进行读写操作的三大方式1. 使用dd命令2. 使用块设备的标准接口3. 使用ioctl产生系统调…

深入解析Java并发编程与单例模式

目录 一、调度(四) 1.随机调度大环境 二、锁(二) 1.位置 2.无锁阻塞 3.重入锁 4.连续锁 4.1措施 三、线程方法(二) 1.wait 2.notify 3.wait-notify指位后移 3.1可能时再检查 3.1.1join(二) 3.1.1.1可能时再检查死亡 四、单例模式 1.实现 1.1private构造器 1…

java通过redis简单实现分布式锁

目录 一、简介 二、代码实现 1、maven添加依赖 2、核心逻辑代码 3、使用方式 三、总结 一、简介 我们知道在Java中可以通过关键字synchronized来防止并发引起的问题&#xff0c;而分布式中就需要考虑分布式锁了&#xff0c;今天来讲一个比较简单的实现&#xff0c;通过re…

网络编程--TCP/UDP Socket套接字

网络编程 程序员主要操作应用层和传输层来实现网络编程&#xff0c;也就是自己写一个程序&#xff0c;让这个程序可以使用网络来通信&#xff0c;这个程序属于应用层&#xff0c;实现通讯就需要获取到传输层提供的服务 这就需要使用传输层提供的api UDP: 无连接&#xff0c;不可…

claude-code订阅方案

Claude Code 订阅方案对比 编写日期&#xff1a;2025 年 08 月 20 日 &#x1f3f7;️ 专业版 Pro ($20/月&#xff0c;$200/年) 主要特性 可用模型&#xff1a;Claude Sonnet 4&#xff08;Claude Opus 4成本太高&#xff0c;谨慎选择&#xff09;适用场景&#xff1a;适合轻度…

146. LRU缓存

题目&#xff1a; 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓存中&#xff0c;则返回关键字的值&#x…

第二十节:3D文本渲染 - 字体几何体生成与特效

第二十节&#xff1a;3D文本渲染 - 字体几何体生成与特效 TextGeometry深度解析与高级文字效果实现1. 核心概念解析 1.1 3D文字渲染技术对比技术原理优点缺点TextGeometry将字体轮廓转换为3D网格真实3D效果&#xff0c;支持材质性能开销大&#xff0c;内存占用高Canvas纹理将文…

zzz‘sJava知识点概括总结

类型转化 字符串&#xff1a;c语言&#xff1a;char Java&#xff1a;string 表达式值的类型由最高类型决定&#xff1a; 取值范围&#xff1a;byte<short<int<long<float<double&#xff08;且运算时byte和short都是转化为int类型进行计算防止数据溢出&…