news 2026/7/9 4:44:17

JavaWeb(三)JavaScript详细讲解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
JavaWeb(三)JavaScript详细讲解

JavaScript

文档查询:

W3School 在线教程

1.引入方式

第一种方式:内部脚本,将JS代码定义在HTML页面中

  • JavaScript代码必须位于<script></script>标签之间

  • 在HTML文档中,可以在任意地方,放置任意数量的<script>

  • 一般会把脚本置于<body>元素的底部,可改善显示速度

例子:

<script> alert("Hello JavaScript") </script>

第二种方式:外部脚本将, JS代码定义在外部JS文件中,然后引入到HTML页面中

  • 外部JS文件中,只包含JS代码,不包含<script>标签

  • 引入外部js的<script>标签,必须是双标签

例子:

<script src="js/demo.js"></script>

注意:demo.js中只有js代码,没有<script>标签。

2.基础语法

2.1 书写语法

  1. 区分大小写:与 Java 一样,变量名、函数名以及其他一切东西都是区分大小写的

  2. 每行结尾的分号可有可无

  3. 大括号表示代码块

  4. 注释:

    1. 单行注释:// 注释内容

    2. 多行注释:/* 注释内容 */

js中3钟输出语句:

api

描述

window.alert()

警告框,window.可以省略,即alert()

document.write()

在HTML 页面输出内容

console.log()

写入浏览器控制台

2.2 变量

js中主要通过如下3个关键字来声明变量:

关键字

解释

var

早期ECMAScript5中用于变量声明的关键字

let

ECMAScript6中新增的用于变量声明的关键字,相比较var,let只在代码块内生效

const

声明常量的,常量一旦声明,不能修改

在js中声明变量还需要注意如下几点:

  • JavaScript 是一门弱类型语言,变量可以存放不同类型的值

  • 变量名需要遵循如下规则:

    • 组成字符可以是任何字母、数字、下划线(_)或美元符号($)

    • 数字不能开头

    • 建议使用驼峰命名

var和let的区别:

  • var声明的变量的作用域是全局的,而且可以重复定义

  • let所声明的变量,只在 let关键字所在的代码块内有效,且不允许重复声明

2.3 数据类型和运算符

2.3.1 数据类型

虽然js是弱数据类型的语言,但是js中也存在数据类型,js中的数据类型分为 :原始类型 和 引用类型,具体有如下类型:

数据类型

描述

number

数字(整数、小数、NaN(Not a Number))

string

字符串,单双引皆可

boolean

布尔。true,false

null

对象为空

undefined

当声明的变量未初始化时,该变量的默认值是 undefined

  • 使用typeof函数可以返回变量的数据类型

2.3.2 运算符

js中的运算规则绝大多数还是和java中一致的,具体运算符如下:

运算规则

运算符

算术运算符

+ , - , * , / , % , ++ , --

赋值运算符

= , += , -= , *= , /= , %=

比较运算符

> , < , >= , <= , != , == , === 注意 == 会进行类型转换,=== 不会进行类型转换

逻辑运算符

&& , || , !

三元运算符

条件表达式 ? true_value: false_value

==和===是有区别的:

  • ==:只比较值是否相等,不区分数据类型,哪怕类型不一致,==也会自动转换类型进行值得比较

  • ===:不光比较值,还要比较类型,如果类型不一致,直接返回false

2.3.3 数据类型转换
  1. 通过parseInt()函数来进行将其他类型转换成数值类型:

    1. 如果是纯数字字符串,直接转换成对应的数字

    2. 如果是非纯数字字符串,会把开始的最长数字子串转换成数字,如parseInt('123Afe2')的结果为123,但是parseInt('Afe2')的结果为NaN

  2. 通过Boolean()函数可以将其他类型转换成布尔类型:

    1. 除了0、null、undefined、""、NaN 会被认为是false,其他都会被认为是true

3.函数

JavaScript中的函数被设计为执行特定任务的代码块,通过关键字function来定义。

3.1 第一种定义格式

function 函数名(参数1,参数2..){ 要执行的代码 } //示例 function add(a, b){ return a + b; }

注意点

  • 形式参数不需要声明类型,并且JavaScript中不管什么类型都是let或者var去声明,加上也没有意义。

  • 返回值也不需要声明类型,直接return即可

3.2 第二种定义格式

var 函数名 = function (参数1,参数2..){ //要执行的代码 }
JavaScript的流程控制语句if,switch,for等和java保持一致,这里不多阐述

4.JavaScript对象

JavaScript对象可以分为三类:

  • 基本对象,我们主要学习Array和JSON和String

  • BOM对象,主要是和浏览器相关的几个对象

  • DOM对象,JavaScript中将html的每一个标签都封装成一个对象

4.1 基本对象

4.1.1 Array对象

Array对象时用来定义数组的。常用语法格式有如下2种:

方式1

var 变量名 = new Array(元素列表); //例如: var arr = new Array(1,2,3,4); //1,2,3,4 是存储在数组中的数据(元素)

方式2

var 变量名 = [ 元素列表 ]; //例如: var arr = [1,2,3,4]; //1,2,3,4 是存储在数组中的数据(元素)

通过索引可以获取数组中的值:

arr[索引] = 值;

细节

JavaScript中的数组长度是可变的,而且因为JavaScript是弱类型语言,所以数组可以存放各种类型的数据,例如:

var arr = [1,2,3,4]; arr[10] = 50; console.log(arr[10]); //50 console.log(arr[9]); //undefined
属性和方法

属性:

属性

描述

length

设置或返回数组中元素的数量。

方法:

方法方法

描述

forEach()

遍历数组中的每个有值得元素,并调用一次传入的函数

push()

将新元素添加到数组的末尾,并返回新的长度

splice()

从数组中删除元素

  • length属性:可以用来获取数组的长度,可以借助这个属性,来遍历数组中的元素

  • forEach()函数:这个方法的参数,需要传递一个函数,而且这个函数接受一个参数,就是遍历时数组的值

//e是形参,接受的是数组遍历时的值 arr.forEach(function(e){ console.log(e); }) //在ES6中,引入箭头函数的写法,语法类似java中lambda表达式 arr.forEach((e) => { console.log(e); })
  • push()函数:用于向数组的末尾添加元素,其中函数的参数就是需要添加的元素

  • splice()函数:用来删除数组中的元素,函数中填入2个参数。

    • 参数1:表示从哪个索引位置删除

    • 参数2:表示删除元素的个数

4.1.2 String对象

String对象的创建方式有2种:

方式1

var 变量名 = new String("…") ; //例如: var str = new String("Hello String");

方式2

var 变量名 = "…" ; //例如: var str = 'Hello String';
属性和方法

属性:

属性

描述

length

字符串的长度。

方法:

方法

描述

charAt()

返回在指定位置的字符。

indexOf()

检索字符串。

trim()

去除字符串两边的空格

substring()

提取字符串中两个指定的索引号之间的字符。

  • length属性:可以用于返回字符串的长度

  • charAt()函数:用于返回在指定索引位置的字符,函数的参数就是索引

  • indexOf()函数:用于检索指定内容在字符串中的索引位置,返回值是索引,参数是指定的内容

  • trim()函数:用于去除字符串两边的空格,并返回去除空格后的字符串

  • substring()函数:用于截取字符串,函数有2个参数

    • 参数1:表示从哪个索引位置开始截取,包含

    • 参数2:表示到哪个索引位置结束,不包含

4.1.3 JSON对象
自定义对象

在 JavaScript 中自定义对象特别简单,其语法格式如下:

var 对象名 = { 属性名1: 属性值1, 属性名2: 属性值2, 属性名3: 属性值3, ... 函数名称: function(形参列表){} };

我们可以通过如下语法调用属性:

对象名.属性名

通过如下语法调用函数:

对象名.函数名()
json对象

JSON对象:JavaScriptObjectNotation,JavaScript对象标记法,是通过JavaScript标记法书写的文本,其格式如下:

{ "key":value, "key":value, "key":value }

其中,key必须使用引号并且是双引号标记,value可以是任意数据类型。

例如我们可以直接百度搜索“json在线解析”,随便挑一个进入,然后编写内容如下:

{ "name": "李传播" }

JSON对象经常用来作为前后台交互的数据载体。如下图所示:前后台交互时,我们需要传输数据,但是java中的对象我们该怎么去描述呢?我们可以使用如图所示的xml格式,可以清晰的描述java中需要传递给前端的java对象。

但是xml格式存在如下问题:

  • 标签需要编写双份,占用带宽,浪费资源

  • 解析繁琐

所以我们可以使用json来替代,如下图所示:

var jsonstr = '{"name":"Tom", "age":18, "addr":["北京","上海","西安"]}'; alert(jsonstr.name); //undefined

jsonstr是一个json字符串,不是json对象,所以结果是undefined,需要借助parse函数来进行json字符串和json对象的转换:

var obj = JSON.parse(jsonstr); alert(obj.name); //Tom

通过stringify函数可以将json对象再次转换成json字符串:

alert(JSON.stringify(obj)); //{"name":"Tom", "age":18, "addr":["北京","上海","西安"]}

4.2 BOM对象

BOM的全称是Browser Object Model。JavaScript将浏览器的各个组成部分封装成了对象。我们要操作浏览器的部分功能,可以通过操作BOM对象的相关属性或者函数来完成。

BOM中提供了如下5个对象:

对象名称

描述

Window

浏览器窗口对象

Navigator

浏览器对象

Screen

屏幕对象

History

历史记录对象

Location

地址栏对象

4.2.1 Window对象

window对象指的是浏览器窗口对象,是JavaScript的全部对象,所以对于window对象,我们可以直接使用,并且对于window对象的方法和属性,我们可以省略window,例如window.alert('hello')alert('hello')是一样的。

window对象提供了获取其他BOM对象的属性:

属性

描述

history

用于获取history对象

location

用于获取location对象

Navigator

用于获取Navigator对象

Screen

用于获取Screen对象

也就是说我们要使用location对象,只需要通过代码window.location或者简写location即可使用

window也提供了一些常用的函数,如下表格所示:

函数

描述

alert()

显示带有一段消息和一个确认按钮的警告框。

comfirm()

显示带有一段消息以及确认按钮和取消按钮的对话框。

setInterval()

按照指定的周期(以毫秒计)来调用函数或计算表达式。

setTimeout()

在指定的毫秒数后调用函数或计算表达式。

  • alert()函数:弹出警告框,参数的内容就是警告框的内容

  • confirm()函数:弹出确认框,并且提供用户2个按钮,分别是确认和取消;用户点击确认时,返回true,点击取消时,返回false

  • setInterval(fn,毫秒值):定时器,用于周期性的执行某个功能,并且是循环执行。该函数需要传递2个参数

    • fn:函数,需要周期性执行的功能代码

    • 毫秒值:间隔时间

var i = 0; setInterval(function(){ i++; console.log("定时器执行了"+i+"次"); },2000);
  • setTimeout(fn,毫秒值) :定时器,只会在一段时间后执行一次功能。参数和上述setInterval一致

//定时器 - setTimeout -- 延迟指定时间执行一次 setTimeout(function(){ alert("JS"); },3000);

浏览器打开,3s后弹框,关闭弹框,发现再也不会弹框了。

4.2.2 Location对象

location是指代浏览器的地址栏对象,对于这个对象,我们常用的是href属性,用于获取或者设置浏览器的地址信息

//获取浏览器地址栏信息 alert(location.href); //设置浏览器地址栏信息 location.href = "https://www.itcast.cn";

4.3 DOM对象

DOM:Document Object Model 文档对象模型,也就是 JavaScript 将 HTML 文档的各个组成部分封装为对象。

DOM 其实我们并不陌生,之前在学习 XML 就接触过,只不过 XML 文档中的标签需要我们写代码解析,而 HTML 文档是浏览器解析。封装的对象分为

  • Document:整个文档对象

  • Element:元素对象

  • Attribute:属性对象

  • Text:文本对象

  • Comment:注释对象

DOM的作用是通过修改HTML元素的内容和样式等来实现页面的各种动态效果,HTML中的Element对象可以通过Document对象获取,而Document对象是通过window对象获取的。document对象提供的用于获取Element元素对象的api如下表所示:

函数

描述

document.getElementById()

根据id属性值获取,返回单个Element对象

document.getElementsByTagName()

根据标签名称获取,返回Element对象数组

document.getElementsByName()

根据name属性值获取,返回Element对象数组

document.getElementsByClassName()

根据class属性值获取,返回Element对象数组

  • document.getElementById(): 根据标签的id属性获取标签对象,id是唯一的,所以获取到是单个标签对象,例如document.getElementById('h1')

  • document.getElementsByTagName() : 根据标签的名字获取标签对象,同名的标签有很多,所以返回值是数组,例如document.getElementsByTagName('div')

  • document.getElementsByName() :根据标签的name的属性值获取标签对象,name属性值可以重复,所以返回值是一个数组,例如document.getElementsByName('hobby')

  • document.getElementsByClassName() : 根据标签的class属性值获取标签对象,class属性值也可以重复,返回值是数组,例如document.getElementsByClassName('cls')

获取到标签了,可以通过参考书得到标签对象的属性来操作标签的内容,例如可以通过div标签对象的innerHTML属性来修改标签的内容

5.JavaScript事件

5.1 事件绑定

JavaScript对于事件的绑定提供了2种方式:

方式1:通过html标签中的事件属性进行绑定,例如一个按钮,我们对于按钮可以绑定单机事件,可以借助标签的onclick属性,属性值指向一个函数

<input type="button" id="btn1" value="事件绑定1" onclick="on()"> <script> function on(){ alert("按钮1被点击了..."); } </script>

方式2:通过DOM中Element元素的事件属性进行绑定

<input type="button" id="btn2" value="事件绑定2"> <script> document.getElementById('btn2').onclick = function(){ alert("按钮2被点击了..."); } </script>

事件绑定的函数,只有在事件被触发时,函数才会被调用

5.2 常见事件

事件属性名

说明

onclick

鼠标单击事件

onblur

元素失去焦点

onfocus

元素获得焦点

onload

某个页面或图像被完成加载

onsubmit

当表单提交时触发该事件

onmouseover

鼠标被移到某元素之上

onmouseout

鼠标从某元素移开

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/9 4:40:43

word文档如何按照章节修改页眉

一&#xff1a;右上角页眉按章节修改 word2016发现原有文档右边的页眉是按照每个章节内容显示的&#xff0c;某个特定的章节页眉显示出现拼写错误。需要单独修改本章节页眉。结果发现一修改本章节的页眉&#xff0c;所有整洁页眉都跟着修改了。研究使用分页符&#xff08;分隔开…

作者头像 李华
网站建设 2026/7/9 4:40:20

影刀RPA Excel多表合并:跨文件跨Sheet数据整合

title: “影刀RPA Excel多表合并&#xff1a;跨文件跨Sheet数据整合” date: 2026-07-01 author: 林焱 影刀RPA Excel多表合并&#xff1a;跨文件跨Sheet数据整合 每个分公司提交一个Excel&#xff0c;每个月一个文件&#xff0c;每个人一个Sheet……汇总的时候要一个个打开复…

作者头像 李华
网站建设 2026/7/9 4:39:41

TongWeb7企业版 适配Redis分布式会话(spring-session-redis)

描述&#xff1a;客户项目通过spring-session-redis实现分布式会话共享&#xff0c;部署至 TongWeb7 企业版后&#xff0c;偶发会话失效&#xff0c;用户被强制跳转回登录页面排查&#xff1a;抓包与日志观测发现&#xff1a;异常请求&#xff08;如错误页、异常跳转请求&#…

作者头像 李华
网站建设 2026/7/9 4:39:07

工业胶辊酸洗输送辊选什么材质耐酸碱耐腐蚀?

工业胶辊酸洗输送辊是钢材、铝板清洗产线的基础配件&#xff0c;大家日常见到的不锈钢厨具、汽车钢板原材料&#xff0c;都会经过酸洗除氧化层工序&#xff0c;整条清洗线依靠工业胶辊酸洗输送辊传送板材&#xff0c;长期浸泡酸碱药液很容易出现胶层腐蚀、开裂&#xff0c;不少…

作者头像 李华
网站建设 2026/7/9 4:38:16

桌面整理工具

项目简介 桌面整理工具是一款使用纯 Python 开发、基于 Tkinter 构建图形界面的开源工具。它能够自动扫描并归类桌面上的文件&#xff0c;帮助用户快速整理杂乱无章的桌面环境。 项目源码仓库&#xff1a;https://github.com/eagleyuanshen/desk_clean 核心功能 1. 智能文件…

作者头像 李华