当前位置: 首页 > news >正文

Web前端基础:JavaScript

1.JS核心语法

1.1 JS引入方式

  • 第一种方式:内部脚本,将JS代码定义在HTML页面中
    • JavaScript代码必须位于<script></script>标签之间
    • 在HTML文档中,可以在任意地方,放置任意数量的<script></script>
    • 一般会把脚本置于元素的底部,可改善显示速度
    • 例子:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>JS 引入方式</title>
</head>
<body><script>alert('Hello JS')</script>
</body>
</html>
  • 第二种方式:外部脚本, 将JS代码定义在外部 JS文件中,然后引入到 HTML页面中
    • 外部JS文件中,只包含JS代码,不包含<script>标签
    • 引入外部js的<script>标签,必须是双标签
    • 例子:
      • 在js目录下,定义一个js文件demo.js,在文件中编写js代码,如下:
alert('Hello JS')

在html文件中,通过引入js文件demo.js,如下:

<script src="js/demo.js"></script>
  • 注意1:demo.js中只有js代码,没有<script>标签
  • 注意2:通过<script></script>标签引入外部JS文件时,标签不能自闭合,如:<script src="js/demo.js" />
  • JS书写规范:
    • 结束符:每行js代码,结尾以分号结尾,而结尾的分号可有可无。(建议在一个项目中保持一致,要么全部都加,要么全部都不加)
    • 注释:单行注释,多行注解的写法, 与java中一致。

1.2JS基础语法

1.2.1输出语句

在这里插入图片描述

    <script>//方式一: 写入浏览器的body区域document.write("Hello JS (document.write)");//方式二: 弹出框window.alert("Hello JS (window.alert)");//方式三: 控制台console.log("Hello JS (console.log)")</script>

1.2.2变量

  • JS中主要通过 let 关键字来声明变量的。
  • JS是一门弱类型语言,变量是可以存放不同类型的值的。
  • 变量名需要遵循如下规则:
    • 组成字符可以是任何字母、数字、下划线(_)或美元符号($),且数字不能开头
    • 变量名严格区分大小写,如:name和Name是不同的变量
    • 不能使用关键字作为变量名,如:let、if、for等
<script>//变量let a = 20;a = "Hello";alert(a);
</script>

上述的示例中,大家会看到变量a既可以存数字,又可以存字符串。 因为JS是弱类型语言。

2.2.2常量

在JS中,如果声明一个场景,需要使用const关键字。一旦声明,常量的值就不能改变 (不可以重新赋值)。

1.2.3数据类型

在这里插入图片描述
使用typeof 关键字可以返回变量的数据类型,接下来我们需要通过书写代码来演示js中的数据类型。代码如下:

    <script>//原始数据类型alert(typeof 3); //numberalert(typeof 3.14); //numberalert(typeof "A"); //stringalert(typeof 'Hello');//stringalert(typeof true); //booleanalert(typeof false);//booleanalert(typeof null); //object var a ;alert(typeof a); //undefined</script>

对于字符串类型的数据,除了可以使用双引号(“…”)、单引号(‘…’)以外,还可以使用反引号 (``)。 而使用反引号引起来的字符串,也称为 模板字符串。

  • 模板字符串的使用场景:拼接字符串和变量。
  • 模板字符串的语法:
    • ... :反引号 (英文输入模式下键盘 tab 键上方波浪线 ~ 那个键)
    • 内容拼接时,使用 ${ } 来引用变量
      具体示例如下:
  <script>let name = 'Tom';let age = 18;console.log('大家好, 我是新入职的' + name + ', 今年' + age + '岁了, 请多多关照'); //原始方式 , 手动拼接字符串console.log(`大家好, 我是新入职的${name}, 今年${age}岁了, 请多多关照`); //使用模板字符串方式拼接字符串</script>

1.2.4函数

函数(function)是被设计用来执行特定任务的代码块,方便程序的封装复用。 那我们学习函数,主要就是学习JS中函数的定义及调用的语法。

1.2.4.1方式一
function 函数名(参数1,参数2..){要执行的代码
}

因为JavaScript是弱数据类型的语言,所以有如下几点需要注意:

  • 形参不需要声明类型,并且JS中不管什么类型都是let去声明,加上也没有意义。
  • 返回值也不需要声明类型,直接return即可
    示例 :
function add(a, b){return a + b;
}

如果要调用上述的函数add,可以使用:函数名称(实际参数列表)

let result = add(10,20);
alert(result);

我们在调用add函数时,再添加2个参数,修改代码如下:

var result = add(10,20,30,40);
alert(result);

浏览器打开,发现没有错误,并且依然弹出30,这是为什么呢?
因为在JavaScript中,函数的调用只需要名称正确即可,参数列表不管的。如上述案例,10传递给了变量a,20传递给了变量b,而30和40没有变量接受,但是不影响函数的正常调用。
注意:由于JS是弱类型语言,形参、返回值都不需要指定类型。在调用函数时,实参个数与形参个数可以不一致,但是建议一致。

1.2.4.2方式二

刚才我们定义函数,是为函数指定了一个名字。 那我们也可以不为函数指定名字,那这一类的函数,我们称之为匿名函数。那接下来,方式二,就来介绍一下匿名函数的定义和调用。
匿名函数:是指一种没有名称的函数,由于它们没有名称,因此无法直接通过函数名来调用,而是通过变量或表达式来调用。
匿名函数定义可以通过两种方式:函数表达式 和 箭头函数。

  • 示例一(函数表达式):
var add = function (a,b){return a + b;
}
  • 示例二(箭头函数):
var add = (a,b) => {return a + b;
}

上述匿名函数声明好了之后,是将这个函数赋值给了add变量。 那我们就可以直接通过add函数直接调用,调用代码如下:

let result = add(10,20);
alert(result);

而箭头函数这种形式,在现在的前端开发中用的会更多一些。

1.2.4.3自定义对象

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

let 对象名 = {属性名1: 属性值1,属性名2: 属性值2,属性名3: 属性值3,方法名称: function(形参列表){}
};

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

对象名.属性名

通过如下语法调用函数:

对象名.方法名()

代码演示:

<script>//自定义对象let user = {name: "Tom",age: 10,gender: "男",sing: function(){console.log("悠悠的唱着最炫的民族风~");}}console.log(user.name);user.eat();
<script>

浏览器控制台结果如下:
在这里插入图片描述
其中,上述函数定义的语法可以简化成如下格式:

<script>//自定义对象let user = {name: "Tom",age: 10,gender: "男",sing(){console.log("悠悠的唱着最炫的民族风~");}}console.log(user.name);user.eat();
<script>
1.2.4.4 JSON

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

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

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

而由于语法简单,层级结构鲜明,现多用于作为数据载体,在网络中进行数据传输。
在这里插入图片描述
代码演示:

//3. JSON - JS对象标记法
let person = {name: 'itcast',age: 18,gender: '男'
}
alert(JSON.stringify(person)); //js对象 --> json字符串let personJson = '{"name": "heima", "age": 18}';
alert(JSON.parse(personJson).name);

API说明:

JSON.stringify(…):作用就是将js对象,转换为json格式的字符串。
JSON.parse(…):作用就是将json格式的字符串,转为js对象。

1.2.5流程控制

在JS中,当然也存在对应的流程控制语句。常见的流程控制语句如下:

  • if … else if … else …
  • switch
  • for
  • while
  • do … while
    而JS中的流程控制语句与JAVA中的流程控制语句的作用,执行机制都是一样的。这个呢,我们现在就不再一个一个的如研究了,后面用到的时候,我们再做说明。

1.2.6 JS DOM

1.2.6.1 DOM介绍

DOM:Document Object Model 文档对象模型。也就是 JavaScript 将 HTML 文档的各个组成部分封装为对象。
DOM 其实我们并不陌生,之前在学习 XML 就接触过,只不过 XML 文档中的标签需要我们写代码解析,而 HTML 文档是浏览器解析。封装的对象分为

  • Document:整个文档对象
  • Element:元素对象
  • Attribute:属性对象
  • Text:文本对象
  • Comment:注释对象

如下图,左边是 HTML 文档内容,右边是 DOM 树
在这里插入图片描述
那么我们学习DOM技术有什么用呢?主要作用如下:

  • 改变 HTML 元素的内容
  • 改变 HTML 元素的样式(CSS)
  • 对 HTML DOM 事件作出反应
  • 添加和删除 HTML 元素
1.2.6.2DOM操作
  • DOM的核心思想:将网页的内容当做对象来处理,标签的所有属性在该对象上都可以找到,并且修改这个对象的属性,就会自动映射到标签身上。

  • document对象

    • 网页中所有内容都封装在document对象中
    • 它提供的属性和方法都是用来访问和操作网页内容的,如:document.write(…)
  • DOM操作步骤:

    • 获取DOM元素对象
    • 操作DOM对象的属性或方法 (查阅文档)
  • 我们可以通过如下两种方式来获取DOM元素。

    1. 根据CSS选择器来获取DOM元素,获取到匹配到的第一个元素:document.querySelector('CSS选择器');
    2. 根据CSS选择器来获取DOM元素,获取匹配到的所有元素:document.querySelectorAll('CSS选择器');

    注意:获取到的所有元素,会封装到一个NodeList节点集合中,是一个伪数组(有长度、有索引的数组,但没有push、pop等数组方法)

代码演示:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>JS-DOM</title>
</head>
<body><h1 id="title1">11111</h1><h1>22222</h1><h1>33333</h1><script>//1. 修改第一个h1标签中的文本内容//1.1 获取DOM对象// let h1 = document.querySelector('#title1');//let h1 = document.querySelector('h1'); // 获取第一个h1标签let hs = document.querySelectorAll('h1');//1.2 调用DOM对象中属性或方法hs[0].innerHTML = '修改后的文本内容';</script>
</body>
</html>

2.JS事件监听

2.1事件介绍

什么是事件呢?HTML事件是发生在HTML元素上的 “事情”,例如:

  • 按钮被点击
  • 鼠标移到元素上
  • 输入框失去焦点
  • 按下键盘按键

而我们可以给这些事件绑定函数,当事件触发时,可以自动的完成对应的功能,这就是事件监听。
例如:对于我们所说的百度注册页面,我们给用户名输入框的失去焦点事件绑定函数,当我们用户输入完内容,在标签外点击了鼠标,对于用户名输入框来说,失去焦点,然后执行绑定的函数,函数进行用户名内容的校验等操作。
在这里插入图片描述
JS事件是JS非常重要的一部分,接下来我们进行事件的学习。那么我们对于JavaScript事件需要学习哪些内容呢?我们得知道有哪些常用事件,然后我们得学会如何给事件绑定函数。
所以主要围绕2点来学习:①. 事件监听、②. 常用事件

2.2事件监听语法

JS事件监听的语法:

事件源.addEventListener('事件类型', 要执行的函数);

在上述的语法中包含三个要素:

  • 事件源: 哪个dom元素触发了事件, 要获取dom元素
  • 事件类型: 用什么方式触发, 比如: 鼠标单击 click, 鼠标经过 mouseover
  • 要执行的函数: 要做什么事

演示:

<body><input type="button" id="btn1" value="点我一下试试1"><input type="button" id="btn2" value="点我一下试试2"><script>document.querySelector("#btn1").addEventListener('click', ()=>{alert("按钮1被点击了...");})</script>
</body>

2.3隔行换色案例

需求:实现鼠标移入数据行时,背景色改为#f2e2e2,鼠标移出时,再将背景色改为白色。

    <script>//点击列表中每一条记录后面的删除按钮,弹出一个提示框,提示:您是否要删除这条记录? 如果确定,则移出这条记录const deleteButtons = document.querySelectorAll('.delete');for (let i = 0; i < deleteButtons.length; i++) {deleteButtons[i].addEventListener('click', function () {if (confirm('您是否要删除这条记录?')) {//点击确定按钮,删除当前记录this.parentNode.parentNode.remove();}});}//通过js实现鼠标移入移出效果,鼠标移入,背景色为 #f2e2e2,鼠标移出,背景色为 白色。const trs = document.querySelectorAll('tr');for (let i = 1; i < trs.length; i++) {trs[i].addEventListener('mouseenter', function () {this.style.backgroundColor = '#f2e2e2';});trs[i].addEventListener('mouseleave', function () {this.style.backgroundColor = '#fff';});}</script>

2.4常见事件

上面案例中使用到了事件 click、mouseenter、mouseleave,那都有哪些事件类型供我们使用呢?下面就给大家列举一些比较常用的事件属性: 在这里插入图片描述

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>JS-事件-常见事件</title>
</head><body><form action="" style="text-align: center;"><input type="text" name="username" id="username"><input type="text" name="age" id="age"><input id="b1" type="submit" value="提交"><input id="b2" type="button" value="单击事件"></form><br><br><br><table width="800px" border="1" cellspacing="0" align="center"><tr><th>学号</th><th>姓名</th><th>分数</th><th>评语</th></tr><tr align="center"><td>001</td><td>张三</td><td>90</td><td>很优秀</td></tr><tr align="center" id="last"><td>002</td><td>李四</td><td>92</td><td>优秀</td></tr></table><script>//click: 鼠标点击事件document.querySelector('#b2').addEventListener('click', () => {console.log("我被点击了...");})//mouseenter: 鼠标移入document.querySelector('#last').addEventListener('mouseenter', () => {console.log("鼠标移入了...");})//mouseleave: 鼠标移出document.querySelector('#last').addEventListener('mouseleave', () => {console.log("鼠标移出了...");})//keydown: 某个键盘的键被按下document.querySelector('#username').addEventListener('keydown', () => {console.log("键盘被按下了...");})//keydown: 某个键盘的键被抬起document.querySelector('#username').addEventListener('keyup', () => {console.log("键盘被抬起了...");})//blur: 失去焦点事件document.querySelector('#age').addEventListener('blur', () => {console.log("失去焦点...");})//focus: 元素获得焦点document.querySelector('#age').addEventListener('focus', () => {console.log("获得焦点...");})//input: 用户输入时触发document.querySelector('#age').addEventListener('input', () => {console.log("用户输入时触发...");})//submit: 提交表单事件document.querySelector('form').addEventListener('submit', () => {alert("表单被提交了...");})</script>
</body></html>

我们已经学习了前端网页开发的三剑客:HTML、CSS、JS。那通过这三种技术呢,我们就可以开发出一个网页程序了,但是如果我们使用原生的JS来处理界面的交互行为,开发效率呢,是比较低的。而在现在的企业项目开发中,一般会借助于Vue这样的js框架来简化操作、提高开发效率。 那么我们今天接下来呢,就来学习Vue这个框架。

相关文章:

  • 混合云数据库连接问题:本地与云实例的兼容性挑战
  • AI推理服务的高可用架构设计
  • 如何区分 “通信网络安全防护” 与 “信息安全” 的考核重点?
  • 【JavaWeb】Docker项目部署
  • VirtualBox启动失败@Ubuntu22.04 说是配置文件有问题
  • 数组复制--System.arraycopy
  • Redis:现代应用开发的高效内存数据存储利器
  • 【HTTP三个基础问题】
  • 文件(保存)通讯录
  • win11无法打开.bat文件、打开.bat文件闪退解决方案,星露谷smapi mod安装时,.bat安装文件一闪而
  • 如何从浏览器中导出网站证书
  • bat批量去掉本文件夹中的文件扩展名
  • Windows 系统安装 Redis 详细教程
  • 辊式矫平机:金属板材的“整形大师”
  • 计算机基础知识(第五篇)
  • 在命令行直接执行可以执行成功,加入crontab定时任务执行shell脚本不成功失败的问题解决方法
  • 关于 汇编语言:1. 汇编语言基础
  • 2025 年 Java 核心技术全面升级与深度应用解析
  • 2025年6月6日第一轮
  • api将token设置为环境变量
  • 深圳网站建设方案服务公司/网页优化包括什么
  • 上海软件系统开发公司/武汉seo计费管理
  • 广告电商怎么做/seo推广费用
  • 南宁学网站建设/百度网站收录链接提交
  • 淘宝客怎样做自己的网站推广/seo点击器
  • 电子商务专业网站设计/韩国热搜榜