web前端开发-JS

web前端开发-JS

什么是JavaScript

  • Web标准也称网页标准,由一系列的标准组成,大部分由W3C(World Wide Web Consortium,万维网联盟)负责制定。
  • 三个组成部分:
    • HTML:负责网页的结构(页面元素和内容)。
    • CSS:负责网页的表现(页面元素的外观、位置等页面样式,如:颜色、大小等)。
    • JavaScript:负责网页的行为(交互效果)。
  • JavaScript(简称:JS)是一门跨平台、面向对象的脚本语言(不用编译直接运行),是用来控制网页行为,实现页面的交互效果。
    JavaScript 和 Java 是完全不同的语言,不论是概念还是设计。但是基础语法类似。
  • 组成:
    • ECMAScript:规定了JS基础语法核心知识,包括变量、数据类型、流程控制、函数、对象等。
      • ECMA:ECMA国际(前身为欧洲计算机制造商协会),制定了标准化的脚本程序设计语言 ECMAScript,这种语言得到广泛应用。而JavaScript是遵守ECMAScript的标准的(ES2024是最新版本)。
    • BOM:浏览器对象模型,用于操作浏览器本身,如:页面弹窗、地址栏操作、关闭窗口等。
    • DOM:文档对象模型,用于操作HTML文档,如:改变标签内的内容、改变标签内字体样式等。

核心语法

引入方式

  • 内部脚本:将JS代码定义在HTML页面中
    • JavaScript代码必须位于标签之间
    • 在HTML文档中,可以在任意地方,放置任意数量的

在这里插入图片描述

  • 外部脚本:将 JS代码定义在外部 JS文件中,然后引入到HTML页面中,复用性更强
    在这里插入图片描述
<!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><!--  外部脚本--><script src="js/test.js"></script></body>
</html>

JS书写规范

  • 结束符:每行结尾以分号结尾,结尾分号可有可无,最好要么全加要么不加

基础语法

变量:

  • JS中用 let 关键字来声明变量(弱类型语言,变量可以存放不同类型的值)。
  • 变量名需要遵循如下规则:
    • 只能用 字母、数字、下划线(_)、美元符号($)组成,且数字不能开头
    • 变量名严格区分大小写,如 name 和 Name 是不同的变量
    • 不能使用关键字,如:let、var、if、for等

在这里插入图片描述

早期的js中,还可以使用var声明变量,但是不严谨,使用这个可以重复声明和全局作用域

常量:

  • JS中用 const 关键字来声明常量。
  • 一旦声明,常量的值就不能改变(不可以重新赋值)。

在这里插入图片描述

<!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>// 什么变量,弱类型,不用申明变量类型let a = 1;a="HELLO"alert(a)//弹出框const PI=3.14;//pI =5.0;// 不报错,但没改变值console.log(PI);//输出到控制台,按f12,这时可以看到控制台报错(不能为常量赋值)document.write("hello world");//不常用,直接将内容输出到页面的body中</script></body>
</html>

数据类型 :

弱类型的语言不代表没有类型,只是声明变量时不用声明

  • JavaScript的数据类型分为:基本数据类型和引用数据类型(对象)。

  • 基本数据类型:

    • number:数字(整数、小数、NaN(Not a Number)

    NaN (Not a Number) 是一个特殊的数值,表示一个不是数字的数值。当执行数学运算但结果不是有效数字时就会出现NaN。例如:

    • 试图将字符串转换为数字但失败时
    • 执行无法得到数字结果的数学运算时(比如 0/0)
    • 使用NaN进行任何数学运算,结果都会是NaN

    有趣的是,尽管NaN表示"不是一个数字",它在JavaScript中的数据类型仍然是number。

    • boolean:布尔。true,false
    • null:对象为空。JavaScript是大小写敏感的,因此null、Null、NULL是完全不同的
    • undefined:当声明的变量未初始化时,该变量的默认值是 undefined
    • string:字符串,单引号、双引号、反引号皆可,推荐使用单引号

● 使用 typeof 运算符可以获取数据类型:

在这里插入图片描述

  • 模板字符串语法:
    • ``(反引号,英文输入模式下按键盘的tab键上方波浪线~那个键)
    • 内容拼接变量时,使用 ${} 包住变量

在这里插入图片描述

<!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(typeof 1)alert(typeof "1")alert(typeof true)alert(typeof undefined)alert(typeof null)//objectalert(typeof NaN)let a;alert(typeof a)alert(typeof `javascript`)//2.模板字符串,简化字符串拼接let name = "小明"let age = 18alert(`${name}今年${age}`)</script></body>
</html>

函数:

  • 介绍:函数(function)是被设计用来执行特定任务的代码块,方便程序的封装复用。
  • 定义:JavaScript中的函数通过function关键字进行定义,语法为:
  • 不指定返回值的类型和参数类型名

在这里插入图片描述

  • 调用:函数名称(实际参数列表)

在这里插入图片描述

注意:

  • 由于JS是弱类型语言,形参、返回值都不需要指定类型。在调用函数时,实参个数与形参个数可以不一致,但是建议一致。

匿名函数;

  • 匿名函数是指一种没有名称的函数。可以通过两种方式定义:函数表达式和箭头函数

在这里插入图片描述

  • 匿名函数定义后,可以通过变量名直接调用

在这里插入图片描述

<!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>//1具名函数function add(a,b){return a+b;}let c=add(1,2);console.log(c);let d=add(3,4,6);//只传入2个参数,所以只返回2个参数相加的结果console.log(d);let add1=function(a,b){return a+b;}console.log(add1(1,22));let add2=(a,b)=>a+b;console.log(add2(1,200));</script></body>
</html>

自定义对象:

定义格式:

在这里插入图片描述

调用格式:

在这里插入图片描述

<!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>class Person{constructor(name,age){this.name = name;this.age = age;}say(){console.log(`我叫${this.name},今年${this.age}`);}}let p = new Person('张三',18);alert(p.name)let user={name:'张三',age:18,sing1:()=>{//箭头函数的this指向外部函数的this,不推荐console.log(`我叫${this.name},今年${this.age}`);},say:function(){console.log(`我叫${this.name},今年${this.age}`);},sing:function(){console.log(`我叫${this.name},今年${this.age}`);}}alert(user.name)alert(user.age)alert(user.say())</script>
</body>
</html>

Json

  • 概念:JavaScript Object Notation,JavaScript对象标记法(JS对象标记法书写的文本)。
  • 由于其语法简单,层次结构鲜明,现多用于作为数据载体,在网络中进行数据传输。

在这里插入图片描述

在这里插入图片描述

<!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>let user={name:'张三',age:18,sing1:()=>{//箭头函数的this指向外部函数的this,不推荐console.log(`我叫${this.name},今年${this.age}`);},say:function(){console.log(`我叫${this.name},今年${this.age}`);},sing:function(){console.log(`我叫${this.name},今年${this.age}`);}}alert(JSON.stringify(user));let personJson='{"name":"heima","age":"18"}';//注意外面要单引号,里面name不用大括号,必须双引号alert(JSON.parse(personJson).name);</script>
</body>
</html>

DOM

  • 概念:Document Object Model,文档对象模型。
    • 将标记语言的各个组成部分封装为对应的对象:
    • Document:整个文档对象
    • Element:元素对象
    • Attribute:属性对象
    • Text:文本对象
    • Comment:注释对象
  • JavaScript 通过DOM,就能够对HTML进行操作:
    • 改变 HTML 元素的内容
    • 改变 HTML 元素的样式(CSS)
    • 对 HTML DOM 事件作出反应
    • 添加和删除 HTML 元素

在这里插入图片描述

在这里插入图片描述

DOM操作:

  • DOM操作核心思想:将网页中所有的元素当做对象来处理。(标签的所有属性在该对象上都可以找到)
  • 操作步骤:
    • 获取要操作的DOM元素对象
    • 操作DOM对象的属性或方法(查文档或AI)
  • 获取DOM对象
    • 根据CSS选择器来获取DOM元素,获取匹配到的第一个元素:document.querySelector(‘选择器’)#sid .txt span

    • 根据CSS选择器来获取DOM元素,获取匹配到的所有元素:document.querySelectorAll(‘选择器’)

      注意:得到的是一个NodeList节点集合,是一个伪数组(有长度、有索引的数组)

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>
DOM</title>
</head>
<body><h1 id="title1">DOM</h1><h1>111111111111111</h1><h1>1111111222222</h1><script>//1.修改第一个h1标签的文本内容// let h1=document.querySelector('#title1');let h1=document.querySelector('h1');//获取第一个h1标签let hs=document.querySelectorAll('h1');//获取所有h1标签//w3shchool.com中DOM查对象h1.innerHTML='DOM修改文本内容';hs[0].innerHTML='DOM修改文本内容1231';</script></body>
</html>

事件监听

  • 事件:HTML事件是发生在HTML元素上的“事情”。比如:
    • 按钮被点击
    • 鼠标移动到元素上
    • 按下键盘按键
  • 事件监听:JavaScript可以在事件触发时,就立即调用一个函数做出响应,也称为 事件绑定或注册事件。
  • 语法:事件源.addEventListener('事件类型’,事件触发执行的函数);
  • 事件监听三要素
    • 事件源:哪个dom元素触发了事件,要获取dom元素
    • 事件类型:用什么方式触发,比如:鼠标单击 click
    • 事件触发执行的函数:要做什么事

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>事件监听</title>
</head>
<body><input type="button" id="btn1" value="按钮1"><input type="button" id="btn2" value="按钮2"><script>//可以多次绑定同一事件,多次显示document.querySelector('#btn1').addEventListener('click',()=>{alert('btn1');})document.querySelector('#btn2').addEventListener('click',()=>{alert('btn2');})// onclick.早期的方式,多次绑定同一事件会覆盖之前的绑定document.querySelector('#btn1').onclick=()=>{alert('btn1');}</script></body>
</html>

常见事件

鼠标事件

  • click:鼠标点击
  • mouseenter:鼠标移入
  • mouseleave:鼠标移出

键盘事件:

  • keydown:键盘按下触发
  • keyup:键盘抬起触发

焦点事件:

  • focus:获得焦点触发
  • blur:失去焦点触发

表单事件:

  • input:用户输入时触发
  • submit:表单提交时触发

import和export:js文件之间的引入(模块化js)

然后再html属性要声明type=“module”

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

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

相关文章

Turtle综合案例实战(绘制复杂图形、小游戏)

在学习了 Turtle 基本的绘图技巧后,我们可以通过结合多个概念和技巧,绘制复杂的图形或实现简单的小游戏。本章将介绍两个实战案例: 绘制复杂图形:结合前面所学的知识,绘制一个精美的多层次复杂图案。简单的游戏:利用 Turtle 实现一个简单的小游戏——蛇形游戏,这是一个经…

Python设计模式:克隆模式

1. 什么是克隆模式 克隆模式的核心思想是通过复制一个已有的对象&#xff08;原型&#xff09;来创建一个新的对象&#xff08;克隆&#xff09;。这种方式可以避免重复的初始化过程&#xff0c;从而提高效率。克隆模式通常涉及以下几个方面&#xff1a; 原型对象&#xff1a…

逻辑漏洞之越权访问总结

什么是越权访问漏洞&#xff1f; “越权访问漏洞” 是 “逻辑漏洞” 的一种&#xff0c;是由于网站系统的权限校验的逻辑不够严谨&#xff0c;没有对用户权限进行严格的身份鉴别&#xff0c;导致普通权限的用户做到了其它普通用户或管理员才能完成的操作&#xff0c;称之为“越…

超短波通信模拟设备:增强通信能力的关键工具

在全球信息化战争的背景下&#xff0c;通信系统扮演着至关重要的角色。为确保通信系统的稳定性和抗干扰能力&#xff0c;超短波通信模拟设备应运而生&#xff0c;为军事训练和通信干扰任务提供强大的支持。 设备特点及优势 便携性&#xff1a;设备体积小、重量轻&#xff0c;…

C++STL——容器-vector(含部分模拟实现,即地层实现原理)(含迭代器失效问题)

目录 容器——vector 1.构造 模拟实现 2.迭代器 模拟实现&#xff1a; ​编辑 3.容量 模拟实现&#xff1a; 4.元素的访问 模拟实现 5.元素的增删查改 迭代器失效问题&#xff1a; 思考问题 【注】&#xff1a;这里的模拟实现所写的参数以及返回值&#xff0c;都是…

Ubuntu交叉编译器工具链安装

声明 本博客所记录的关于正点原子i.MX6ULL开发板的学习笔记&#xff0c;&#xff08;内容参照正点原子I.MX6U嵌入式linux驱动开发指南&#xff0c;可在正点原子官方获取正点原子Linux开发板 — 正点原子资料下载中心 1.0.0 文档&#xff09;&#xff0c;旨在如实记录我在学校学…

Tomcat 部署 Jenkins.war 详细教程(含常见问题解决)

在Tomcat中部署Jenkins.war文件是一个相对简单的过程&#xff0c;以下是详细步骤&#xff1a; 1. 准备工作 确保已安装JDK&#xff1a;Jenkins需要Java环境&#xff0c;建议安装JDK 8或更高版本。 下载Jenkins.war&#xff1a;https://pan.quark.cn/s/c4fd7711a1b3 下载Tomc…

DAY46 动态规划Ⅸ 股票问题Ⅱ

188. 买卖股票的最佳时机 IV - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int maxProfit(int k, vector<int>& prices) {if(prices.size()0) return 0;vector<vector<int>>dp(prices.size(),vector<int>(2*k1,0));for(int i…

4月2日工作日志

一个朴实无华的目录 今日学习内容&#xff1a;1.UIAbility生命周期2.默认启动页面设置3.同模块唤起ability 今日实操内容&#xff1a; 今日学习内容&#xff1a; 1.UIAbility生命周期 2.默认启动页面设置 3.同模块唤起ability 今日实操内容&#xff1a; 通过分组件文件&#…

鸿蒙学习笔记(4)-Radio组件、弹框组件、组件内部状态、工具类

一、Radio组件 &#xff08;1&#xff09;简述 创建单选框组件。接收一个RadioOptions类型对象参数。 名称类型必填说明valuestring是 当前单选框的值。 groupstring是 当前单选框的所属群组名称&#xff0c;相同group的Radio只能有一个被选中。 indicatorType12RadioIndica…

111.在 Vue 3 中使用 OpenLayers 实现动态曲线流动图(类似 ECharts 迁徙状态)

在数据可视化领域&#xff0c;ECharts 提供的 迁徙图&#xff08;流动图&#xff09; 是一种直观展示数据流动的方式&#xff0c;如人口迁徙、物流流向等。我们可以使用 OpenLayers 结合 Vue 3 来实现类似的 动态曲线流动图&#xff0c;从而在 Web GIS 项目中提供更生动的可视化…

全栈开发项目实战——AI智能聊天机器人

文章目录 一&#xff1a;项目技术栈和代码分析1.前端技术栈&#xff08;1&#xff09;HTML&#xff08;index.html&#xff09;&#xff1a;&#xff08;2&#xff09;CSS&#xff08;styles.css&#xff09;&#xff1a;&#xff08;3&#xff09;JavaScript&#xff08;scrip…

无人机机体结构设计要点与难点!

一、无人机机体结构设计要点 1. 类型与应用场景匹配 固定翼无人机&#xff1a;需优化机翼升阻比&#xff0c;采用流线型机身降低气动阻力&#xff08;如大展弦比机翼设计&#xff09;。 多旋翼无人机&#xff1a;注重轻量化框架和对称布局&#xff08;如四轴/六轴碳纤维机…

eBest AI智能报表:用自然语言对话解锁企业数据生产力

告别传统数据迷宫&#xff0c;让业务洞察"开口即得" 【数据价值被困在系统迷宫中】​ 在数字化转型的深水区&#xff0c;80%的企业正被数据孤岛和越来越多&#xff0c;也越来越复杂的系统所困扰。 • 操作黑洞&#xff1a;用户平均通过6次筛选和层级跳转才能触达目标…

Linux 编程环境

文章目录 VimGCCGDBMake Vim Vim GCC GCC&#xff08;GNU Compiler Collection&#xff09;是一款编译语言编译器&#xff0c;此项目最早由GNU计划的发起者理查德 斯托曼开始实施。第一版GCC于1987年发行&#xff0c;最初的GCC代表GNU C Compiler&#xff0c;即GNU的C语言编…

JSONP跨域访问漏洞

一、漏洞一:利用回调GetCookie <?php$conn new mysqli(127.0.0.1,root,root,learn) or die("数据库连接不成功"); $conn->set_charset(utf8); $sql "select articleid,author,viewcount,creattime from learn3 where articleid < 5"; $result…

JuiceFS vs HDFS,最简单的 JuiceFS 入门

你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益: 了解大厂经验拥有和大厂相匹配的技术等希望看什么,评论或者私信告诉我! 文章目录 一、背景二、JuiceFS 入门2.1 核心特性2.2 JuiceFS 架构2.3 JuiceFS 如何存储文…

音频进阶学习二十四——IIR滤波器设计方法

文章目录 前言一、滤波器设计要求1.选频滤波器种类2.通带、阻带、过度带3.滤波器设计指标 二、IIR滤波器的设计过程1.设计方法2.常见的模拟滤波器设计1&#xff09;巴特沃斯滤波器&#xff08;Butterworth Filter&#xff09;2&#xff09;切比雪夫滤波器&#xff08;Chebyshev…

vue3源码分析 -- runtime

runtime运行时&#xff0c;主要在packages/runtime-core目录下&#xff0c;核心提供了h、render等函数。在理解它们之前&#xff0c;我们需要了解下HTML DOM 树和虚拟 DOM等概念 HTML DOM 树 通过节点构成的一个树形结构&#xff0c;我们称为HTML DOM节点树。DOM 文档里面做了…

清明假期在即

2025年4月2日&#xff0c;6~22℃&#xff0c;一般 遇见的事&#xff1a;这么都是清明出去玩&#xff1f;你们不扫墓的么。 感受到的情绪&#xff1a;当精力不放在一个人身上&#xff0c;你就会看到很多人&#xff0c;其实可以去接触的。 反思&#xff1a;抖音上那么多不幸和幸…