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、训练技巧 🍃作者介绍:双非本科大三网络工程专业在读,阿里云专家博…...

SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...

UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...

《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...