JavaScript快速入门,满满干货总结,快速掌握JS语法,DOM,BOM,事件
目录
一. JavaScript、HTML、CSS简介
1.1 HTML简介和举例说明
1.2 CSS简介和举例说明
1.3 JavaScript 简介和举例说明
二. JavaScript 基本语法
2.1 变量类型和定义方式
2.2 逻辑运算符,比较运算符
2.3 流程控制,if,if...else...,while
2.4 函数定义和调用
2.5 全局变量和局部变量
2. 6 方法
三. 真正理解 JavaScript
3.1 JavaScript的组成部分
3.2 宿主介绍和举例说明
四. BOM和DOM
4.1 BOM、DOM概述及二者的关系
4.2 BOM详解
4.2 DOM对象
五. 事件
前言:HTML,CSS,JavaScript正是我们所熟知的前端三件套,而在这三者之中,JavaScript是重中之重。因为不管你是干前端,还是做后端或许都多多少少听说过Vue,Recat,ES5,ES6,typescript 等前端框架,但其实啊,这些框架归根究底,都是封装的 JavaScript 代码。所以,只要我们学会了JavaScript,任何一个前端框架我们都可以很快速的上手理解其中的语法和API。
此外,小编是主攻后端开发的,但作为一个后端开发,当然也需要对前端有所掌握,不过掌握的一定没有专业前端那么深入和彻底,如果文章中哪里出现错误,敬请各位小伙伴批评和指正哦!
那么话不多说,我们开始进入正文吧!
一. JavaScript、HTML、CSS简介
JavaScript是一个跨平台,面向对象的脚本语言。
划重点:跨平台,面向对象,脚本语言。前两个特性,学过Java的小伙伴们一定不陌生,因此,有Java基础的同学,学习JavaScript会相对来说比较轻松。再者,JavaScript是脚本语言,所以它是不需要编译,而是由浏览器直接执行的(这句话记住,后面要考哦!!!)。
本篇主要讲解JavaScript,但是我们又不得不将 JavaScript 与 HTML,CSS做比对。因为它们三者都是构成前端的重要元素,只是各自的分工有所不同。
1.1 HTML简介和举例说明
HTML主要组成前端页面的结构部分,举例如<title>标题,<head>网页头,<body>网页体等结构标签,应用于网页的整体结构;
如下图我写博客的界面所示,这里只是举个例子说明 <title>,<head>,<body>方便各位理解,不用较真哦。例如我们打开一个界面,就会显示我们这个界面的内容,它就可以理解为页面的标题<title>,然后下方还会显示网页链接,我们姑且把它称之为<head>头,再往下就是文章内容,就是我们的主体<body>,这三者就组成了我们的页面结构。

1.2 CSS简介和举例说明
CSS主要决定了网页中各种元素的表现,举例如元素选择器元素名称 "{color: red;}" 、id选择器 "#id属性值{color: red;}" 、class选择器 ".class属性值{color: red;}" ,使用选择器可以对我们页面中的各种元素设置不同种类的样式,例如设置字体为xxx颜色,设置标签为xxx样式;
如下图所示,可以看到,在界面中有的字体是正常黑色,有的是加粗黑色,有的是红色,有的还会有特殊格式,这些个是,都是可以通过CSS选择器来进行控制的。

1.3 JavaScript 简介和举例说明
JavaScript主要控制网页的行为,使网页变的可交互。举例如按钮被点击,鼠标移动上去,按下键盘等对应的数据会发生什么样的动作,都是由JavaScript来进行控制的。
如下图,下方最醒目的三个按钮选项,都是可以进行点击与页面进行交互的,点击不一样的按钮,产生不一样的行为和后果,都是由JavaScript去进行一手操控的,这就是JavaScript最重要的一个特点——"控制用户与界面的交互"。

二. JavaScript 基本语法
2.1 变量类型和定义方式
JavaScript中常用的变量类型分为变量类型,数值类型(不区分整数和小数),字符串类型,布尔类型;而且定义变量均使用 "var" 关键字,一个通用;不像Java中"int","folat","boolean","String"等不同的变量不同的关键字,JavaScript会自动识别我们定义的变量类型。"var" 就是单词 "variable" 的缩写,翻译为变量。
// 变量类型定义方式
var 变量名 = 变量值;// 数值类型定义方式,javaScript中不区分整数和小数
var int1 = 10;
var float1 = 10.5;
var double1 = "10.9";// 字符串类型定义方式
var str = "abcdefg";// 布尔类型定义方式
var flag = true;
var flag2 = false;// 定义数组Array类型
var arr = [1,2,3];// 定义Map类型
var map = new Map([["name","jack"],["age","20"]]);//定义Set类型
var set = new Set([1,3,5,"abc",true]);
2.2 逻辑运算符,比较运算符
- &&:两个都为真结果为真
- ||:一个为真结果为真
- !:取反
- =:赋值
- ==:等于(类型不一样,值一样,,会判断为true)
2.3 流程控制,if,if...else...,while
// if 控制代码块var number = 10;if(number > 10){console.log("大于10");}// if...else if...else控制代码块var number = 10;if(number > 10){console.log("大于10");}else if(number == 10){console.log("等于10")}else{console.log("小于10")}// while 循环控制代码块var num2 = 20;var age = 18;while(num2 < 30){age = age + 1;num2 = num2 + 1;}console.log(age);// "for 临时变量名 of 集合变量名"遍历获取集合中的变量,如下便利map集合和set集合// 便利map集合var map = new Map([["name","jack"],["age","20"]]);for(let x of map){console.log(x)}// 便利set集合var set = new Set([1,3,5,"abc",true]);for(let x of set){console.log(x)}
2.4 函数定义和调用
JavaScript中常用的函数的定义方式有两种。
方式一:function 函数名(参数列表){...方法体}
方式二:var 变量名 = function 函数名(参数列表){...方法体}
// 定义求和函数,调用者调用时传入参数function add(number1,number2){return number1 + number2;}var number = 0;
// 定义判断最大值函数,函数返回一个最大的值var large = function bigNumber(number1,number2){if(number1 > number2){return number1;}else{return number2;}}
// 调用bigNumber函数number = bigNumber(10,11);
2.5 全局变量和局部变量
在JavaScript中,变量也有全局变量和局部变量之分,这一点和Java是一样的。
如上3.4中所示,变量number定义在函数之外,是全局变量,在其他函数中依然可以使用;而number1,number2定义咋函数之内,是局部变量,只能在函数bigNumber内使用;
JavaScript实际上只有一个全局作用域,任何变量(函数也可以视为变量),假设没有在函数范围内找到,就会向外查找,如果没有在全局作用域中找到,就会报错ReferenceError
2. 6 方法
方法就是把函数放到对象的里边,JavaScript中的对象最常用的就是属性和方法。
var zhangsan={name: '张三',birth: 2002,age: function () {//Date().getFullYear()获取今年年份,减去出生年份即为年龄var nowYear=new Date().getFullYear();return nowYear-this.birth;}}// 获取并打印名称console.log(zhangsan.name)// 获取并打印年龄console.log(zhangsan.age())
三. 真正理解 JavaScript
3.1 JavaScript的组成部分
OK,上面我们简单了解了JavaScript,过了一遍基本语法,函数方法定义等,也许小伙伴们认为JavaScript就是console.log、if...else...之类的编程代码。
如果这样想你就错了,在 ECMA(欧洲计算机制造协会)-262中有规定,真正的JavaScript语言,其实包含代码和宿主两部分,我们大多数开发人员都更多的关心代码,对于宿主环境的概念则比较迷糊,其实用大白话来讲,宿主环境就是跑代码的地方。
我们常见跑JavaScript代码的地方,一个就是我们上面提到的浏览器,由浏览器直接执行(看,这句话是不是考到啦);另一个,就是node,简要关系图如下所示。

3.2 宿主介绍和举例说明
ECMA-262规范规定,宿主环境必须提供代码的基准实现以及与环境交互必须的扩展。这样说专业名词也许不是很容易听懂,我们一起来看个例子。
(1)代码的基准实现:
同样一句console.log("hello JavaScript"),在浏览器中执行,会打印在开发者工具的控制台,如下图所示

但如果在 node 中执行,会打印在终端,二者虽然环境不同,但都实现并输出了我们编写的代码,这就是代码的基准实现。

(2)与环境交互必须的扩展
在 node 中,我们可以通过引入 fs 模块,访问本地的文件系统,进行文件读写操作,但这个操作在浏览器中却不行;

上述node的办法虽然在浏览器中行不通,但是我们却有另一种办法。我们可以通过 document 对象(下面马上要说的DOM和BOM)来操作并获取网页中的元素。这里先简单理解,到下面我再详细说明。

总结上面两点,我们姑且先不说 node ,此时就会发现,document 对于JavaScript 至关重要,它是JavaScript语言和浏览器宿主环境交互必要的扩展条件。如下图所示,最左边是我们的浏览器,最右边是JavaScript语言,二者就可以通过document(DOM)和BOM进行交互(不理解也没事,下一小节专门来讲)获取并操作网页中各个元素,可以这么来说,DOM和BOM就是JavaScript语言将浏览器作为宿主环境在浏览器上运行时所存在的概念,是浏览器内置的功能,而并非JavaScript的功能。

那么DOM和BOM到底是什么呢?它有哪些需要我们学习的语法知识呢?往下看,我们来深入探究。
四. BOM和DOM
4.1 BOM、DOM概述及二者的关系
BOM,BOM全称 Browser Object Model,译为浏览器对象模型。通俗一点来说,小伙伴们可以直接将它理解为整个浏览器,而DOM全称 Document Object Model,译为文档对象模型,它代表浏览器页面中展示的内容。一个指代浏览器,一个指代浏览中的内容;此时二者的关系显而易见了,BOM是包含DOM的。
那么既然BOM是包含DOM的,又为什么在网上很多人都喜欢拿二者相提并论呢?
原因很简单:因为在开发的过程中,几乎90%的工作量都体现在绘制页面,页面文本内容上,而 document 正是负责浏览器页面上所展示的内容,是我们经常打交道的对象,因此将它单独拿出来一点也不为过。
4.2 BOM详解
BOM是浏览器对象,其核心是window(翻译为窗口),它是一个双重角色,既是浏览器与JavaScript交互的一个接口,又是一个Global全局对象。BOM提供了一组API,允许开发者通过JavaScript与浏览器进行交互。浏览器上,网页中任何一个对象都是BOM,也可以说是window的子属性或子对象,所以就可以通过 "window." 的方式进行调用获取。
如下图所示,都是window的子对象,当我们想操作浏览器的各个组成部分时,可以通过window对象来获取它们和它们的子属性。

- Document:文档对象,document == window.document 结果就是true,document对象下面细说;
- History:历史记录对象,通过window.history获取此对象,可以实现对路由跳转的控制;
- Location:地址栏对象,通过window.location获取此对象后,也可以链接到其他URL;
- Navigator:浏览器信息对象:其中包含大量关于Web浏览器的信息,在检测浏览器和操作系统上非常有用;
- Screen:屏幕对象,通过window.screen获取此对象后,可以获取屏幕的各种属性;
4.2 DOM对象
在浏览器中,一个页面就是一个xxx.HTML文件。在HTML文件中,会有不同种类的标签,且部分标签还有父子关系,如下图所示,HTML主要由<head>和<body>构成,二者下面还有子标签<meta>、<h1>、<p>,子标签的下方还有子标签,画出来就是一个树,HTML是顶级父节点。

DOM对象主要包含以下三种
- Element:元素对象,如<html>,<body>,<p>等标签都是元素节点对象;
- Text:文本对象(向用户展示的内容),如<li>文本内容</li>,是展示给用户的文本元素对象;
- Attribute:属性对象,如<a></a>超链接标签的链接属性href="程序猿ZhangSir-CSDN博客";
可以说,HTML文档是由DOM节点元素对象构成的集合。
这里我们只要记住,document 对象可以等效替代HTML即可。即 document对象节点 = HTML父节点,document 也是所有元素标签的父节点对象即可,任意一个HTML文件中的标签,我们都可以通过 document 对象来获取,获取的方式如下代码所示
// document 基本语法如下所示,常用的就是下面三种,其实就跟CSS选择器类似,学过CSS的很容易理解
// 1. 标签选择器,通过标签获取我们要操作的元素,"Tag"就是标签的意思,这行代码意思就是获取h1标签对象
var h1=document.getElementsByTagName('h1');
// 2. ID选择器,每个元素我们都可以为其设置ID,通过ID就可以获取并操作指定的元素对象
var p2=document.getElementById('p2');
// 3. Class类选择器,每个元素不仅不可设置ID,也可以设置Class属性,
// 通过Class我们同样可以获取并操作指定的元素
var p3=document.getElementsByClassName('p3');
五. 事件
事件其实可以简单的理解为用户与浏览器或文档进行交互时发生的各种效果,比如我打开某个新的网页,按下某个"提交"、"修改"、"将鼠标悬停在某个地方"、等一系列操作,每一下点击或鼠标的移动,都有可能会让浏览器生成不一样的新内容或进行一个新的界面,这个过程就是一个事件的发生。
这里我就不再详细进行说明,小编自己在网上搜索学习的时候,找到了一片宝藏博文,总结的非常详细,大家可以跳转学习。
JS事件最全详解-CSDN博客文章浏览阅读2.8k次,点赞23次,收藏47次。方法用于向指定元素添加事件处理程序(事件句柄handler参数1:事件名称必须。字符串,指定事件名。注意: 不要使用 “on” 前缀。例如,使用click,而不是使用onclick。参数2function必须。指定要事件触发时执行的函数。注意:事件对象会作为第一个参数传入函数。参数3useCapture可选。布尔值,指定事件是否在捕获或冒泡阶段执行。true- 事件处理程序(事件句柄)在捕获阶段执行false默认。事件处理程序(事件句柄)在冒泡阶段执行事件对象的类型取决于特定的事件。例如,click。_js事件https://blog.csdn.net/qq_44741577/article/details/135979584?ops_request_misc=&request_id=&biz_id=102&utm_term=js%E4%BA%8B%E4%BB%B6&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-135979584.142^v100^pc_search_result_base4&spm=1018.2226.3001.4187
相关文章:
JavaScript快速入门,满满干货总结,快速掌握JS语法,DOM,BOM,事件
目录 一. JavaScript、HTML、CSS简介 1.1 HTML简介和举例说明 1.2 CSS简介和举例说明 1.3 JavaScript 简介和举例说明 二. JavaScript 基本语法 2.1 变量类型和定义方式 2.2 逻辑运算符,比较运算符 2.3 流程控制,if,if...else...&…...
【C++】C++入门基础【类与对象】
目录 1.类 1.1类的定义 1.2struct 与 class对比 2.访问限定符 3. 类域 4.实例化 5.存储大小----内存对齐 6.this指针 1.类 1.1类的定义 class作为类的关键字,后面跟的是类的名字,如Stack,{}中的为类的主体,类定义结束时…...
Qt | QScatterSeries 散点图
点击上方"蓝字"关注我们 01、QScatterSeries QScatterSeries 的类,它将代表散点图中的一个系列。这个类将包含数据点、颜色和样式等属性,以及用于绘制散点图的方法。 02、main.cpp #include <QtWidgets/QApplication>#include <QtWidgets/QMainWindow…...
无缝协作的艺术:Codigger 视频会议(Meeting)的用户体验
在当今数字化的时代,远程协作已经成为工作和学习中不可或缺的一部分。然而,远程协作也面临着诸多挑战,如沟通不畅、信息同步不及时、协作工具的复杂性等。而 Codigger 视频会议(Meeting)作为一款创新的工具,…...
C基础练习(学生管理系统)
1.系统运行,打开如下界面。列出系统帮助菜单(即命令菜单),提示输入命令 2.开始时还没有录入成绩,所以输入命令 L 也无法列出成绩。应提示“成绩表为空!请先使用命令 T 录入学生成绩。” 同理,当…...
网络安全抓包封包WEB
目录 1.抓包 1. 网络故障排除 应用 意义 2. 网络安全监控 应用 意义 3. 性能优化 应用 意义 4. 协议分析与开发 应用 意义 5. 数据分析与合规性审计 应用 意义 抓包工具 总结 2.抓包的应用对象 1. 网络设备 路由器和交换机 防火墙和入侵检测系统ÿ…...
Spring Boot - 在Spring Boot中实现灵活的API版本控制(上)
文章目录 为什么需要多版本管理?在Spring Boot中实现多版本API的常用方法1. URL路径中包含版本号2. 请求头中包含版本号3. 自定义注解和拦截器 注意事项 为什么需要多版本管理? API接口的多版本管理在我们日常的开发中很重要,特别是当API需要…...
普中51单片机:DS18B20温度传感器操作指南(十三)
文章目录 引言电路图引脚讲解初始化时序写时序读时序温度变换温度读取完整代码 引言 DS18B20是一款单总线接口的数字温度传感器,仅需一个IO口即可实现数据通信。这里只对如何简单操作开发板的DS1802进行讲解,关于DS18B20温度传感器的详细操作原理&#…...
【网络】网络的发展历程及其相关概念
1.什么是网络 计算机网络是指将一群具有独立功能的计算机通过通信设备以及传输媒体被互联起来的,在通信软件的支持下,实现计算机间资源共享、信息交换或协同工作的系统。计算机网络是计算机技术与通信技术紧密结合的产物,两者的迅速发展渗透形…...
鸿蒙HarmonyOS开发:如何使用第三方库,加速应用开发
文章目录 一、如何安装 ohpm-cli二、如何安装三方库1、在 oh-package.json5 文件中声明三方库,以 ohos/crypto-js 为例:2、安装指定名称 pacakge_name 的三方库,执行以下命令,将自动在当前目录下的 oh-package.json5 文件中自动添…...
C++的标准模板库简单介绍
C的标准模板库(STL, Standard Template Library)是一个强大的工具,旨在提供高效和灵活的数据结构和算法。STL的设计目的是使C程序更加通用和可重用。以下是对STL的详细介绍: 1. STL的组成部分 STL主要由以下几部分组成ÿ…...
安卓常用控件ListView
文章目录 ListView的常用属性ListView的常用APIListView的简单使用 ListView是一个列表样式的 ViewGroup,将若干 item 按行排列。它是一个很基本的控件也是 Android 中最重要的控件之一。它可以实现多个 View 的垂直排列并支持滚动显示效果。 ListView的常用属性 常…...
优秀的行为验证码的应用场景与行业案例
应用场景 登录注册 : 验证码适用于App、Web及小程序等用户注册场景,可以抵御自动机恶意注册,垃圾注册、抵御撞库登录、暴力破解、验证账号敏感信息的修改,同时可以有效阻止撞库攻击,从源头进行防护,保障正…...
《程序猿入职必会(10) · SpringBoot3 整合 MyBatis-Plus》
📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…...
计算机网络408考研 2018
1 计算机网络408考研2018年真题解析_哔哩哔哩_bilibili...
(亲测有效)SpringBoot+Vue项目云服务器部署(宝塔)
目录 一、准备工作 1、购买云服务器 2、获取面板地址 二、jdk和数据库 1、安装环境 2、安装Java环境jdk 3、添加数据库 三、前端部署 1、修改后台服务所在源 2、vue build 2、创建站点 四、后端部署 1、修改application.yml 2、idea打包 3、运行jar包 方式一&a…...
健康管理系统
目录 第1章 系统概述 第2章 可行性研究 2.1 项目背景及意义 2.2 可行性研究 第3章 需求分析 3.1 功能性需求 3.2 非功能性需求 3.2.1 性能需求 第4章 总体设计 4.1 技术架构 4.2功能模块设计 第5章 详细设计 5.1 主页 5.2 写剧本杀 5.3 剧本杀分类管理 5.4 个人…...
【计算机网络】网络基础概念
计算机网络发展 独立模式:最开始计算机之间相互独立,每个终端各自持有数据。 网络互联:多台计算机连接在一起,完成数据共享。 局域网 LAN:计算机数量增多,通过交换机和路由器连接在一起。 广域网 WAN: 将远…...
深入理解Spring的三级缓存机制
个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119qq.com] 📱…...
LSTM长短时记忆网络【数学+图解】
文章目录 1、简介2、门控机制3、LSTM3.1、概念3.2、公式⭐3.3、特点 4、图解LSTM⭐4.1、RNN4.2、时间链条4.3、记忆单元🔺4.4、LSTM 5、LSTM与GRU的对比6、应用7、训练技巧 🍃作者介绍:双非本科大三网络工程专业在读,阿里云专家博…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
【JVM】Java虚拟机(二)——垃圾回收
目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四ÿ…...
并发编程 - go版
1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...
LabVIEW双光子成像系统技术
双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制,展现出显著的技术优势: 深层组织穿透能力:适用于活体组织深度成像 高分辨率观测性能:满足微观结构的精细研究需求 低光毒性特点:减少对样本的损伤…...
淘宝扭蛋机小程序系统开发:打造互动性强的购物平台
淘宝扭蛋机小程序系统的开发,旨在打造一个互动性强的购物平台,让用户在购物的同时,能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机,实现旋转、抽拉等动作,增…...
华为OD机试-最短木板长度-二分法(A卷,100分)
此题是一个最大化最小值的典型例题, 因为搜索范围是有界的,上界最大木板长度补充的全部木料长度,下界最小木板长度; 即left0,right10^6; 我们可以设置一个候选值x(mid),将木板的长度全部都补充到x,如果成功…...
rm视觉学习1-自瞄部分
首先先感谢中南大学的开源,提供了很全面的思路,减少了很多基础性的开发研究 我看的阅读的是中南大学FYT战队开源视觉代码 链接:https://github.com/CSU-FYT-Vision/FYT2024_vision.git 1.框架: 代码框架结构:readme有…...
用神经网络读懂你的“心情”:揭秘情绪识别系统背后的AI魔法
用神经网络读懂你的“心情”:揭秘情绪识别系统背后的AI魔法 大家好,我是Echo_Wish。最近刷短视频、看直播,有没有发现,越来越多的应用都开始“懂你”了——它们能感知你的情绪,推荐更合适的内容,甚至帮客服识别用户情绪,提升服务体验。这背后,神经网络在悄悄发力,撑起…...
麒麟系统使用-进行.NET开发
文章目录 前言一、搭建dotnet环境1.获取相关资源2.配置dotnet 二、使用dotnet三、其他说明总结 前言 麒麟系统的内核是基于linux的,如果需要进行.NET开发,则需要安装特定的应用。由于NET Framework 是仅适用于 Windows 版本的 .NET,所以要进…...
