Web06--JavaScript基础02

1、JS流程控制语句

JS与Java一样,也有三个流程控制语句: 顺序结构 选择结构 循环结构

1.1 选择结构

1.1.1 if结构

<script type="text/javascript">if (条件表达式) {代码块;} else if(条件表达式){代码块;} else {代码块;}
</script>

注意事项:JS的条件语句和Java语法基本一样,但是对数据类型的真假判断有些区别。JS中对各种数据类型作为布尔值有以下特点:

类型

用法

boolean

true为真、false为假

number

非0为true

string

除了空字符串(""),其他都是true

null&undefined

都是false

对象

所有对象都为true

  • 总结: 无意义的数据都为false 反之都为true
<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>选择结构--if</title></head><body></body><script>let age = 20;// if单分支if(age > 18){console.log("你已成年");}// if双分支if (age > 18) {console.log("你已成年");} else{console.log("你未成年");}// if多分支let score = Math.floor(Math.random()*100);console.log(score);if(score >= 90){console.log("成绩优秀");}else if(score >= 70){console.log("成绩良好");}else if(score >= 60){console.log("成绩及格");}else{console.log("成绩不及格");}</script>
</html>

1.1.2 switch结构

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>选择结构--switch</title></head><body><script>let month = 1;switch (month){case 1:case 2:case 3:console.log("春天");break;case 4:case 5:case 6:console.log("夏天");break;case 7:case 8:case 9:console.log("秋天");break;case 10:case 11:case 12:console.log("冬天");break;default:console.log("无此月份")break;}</script></body>
</html>

在java中,switch语句可以接受的数据类型: byte int shor char,枚举(1.5) ,String(1.7)

在JS中,switch语句可以接受任意的原始数据类型

1.2 循环结构

1.2.1 for循环

  • 普通for循环
  • 增强for循环 for-of循环
  • 索引for循环 for-in循环
<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>循环结构--for循环</title></head><body><script>// for循环console.log("===================普通for循环===================");for (var i = 0; i < 5; i++) {console.log(i);}var arr = ["张三","李四","王五"];// for-of循环console.log("===================for-of循环===================");for (let s of arr) {console.log(s);}// for-in循环console.log("===================for-in循环===================");for (let a in arr) {console.log(a + ":" + arr[a]);}</script></body>
</html>

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>for-of与for-in循环</title></head><body><script>var person = {name:"张三",age:"20",sex:"男"}// for-in循环console.log("===================for-in循环===================");for (let key in person) {console.log(key + ":" + person[key]);}// for-of循环console.log("===================for-of循环===================");for (let s of person) {console.log(s);}</script></body>
</html>

1. for-in可以遍历对象,for-of不能遍历对象

2. for-in遍历出数组中的索引,for-of遍历出数组中的元素

1.2.2 while循环

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>while循环</title></head><body><script>var num = 10;while(num > 0){console.log(num);num--;}</script></body>
</html>

1.2.3 do-while循环

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>do-while循环</title></head><body><script>var num = 10;do{console.log(num);num--}while(num > 0)</script></body>
</html>

1.2.4 循环总结

while 和Java一样

do-while 和Java一样

重点掌握:

        普通for 与 Java一样

        for-in:遍历出数组的索引

                遍历出对象中的属性名key

        for-of:遍历数组中的元素

2、JS函数(方法)

JS函数是执行特定功能的代码块,也可以称为JS方法。与Java中的方法的功能是一样的。

2.1 语法

function 函数名(参数列表){函数体;[return 返回值;]
}

2.2 函数定义

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>函数的定义</title></head><body><script>// 无参无返回值function jiujiu(){for (var i = 1; i <= 9; i++) {for (var j = 1; j <= i; j++) {document.write(j + "*" + i + "=" + i*j);document.write("&emsp;")if(i * j < 10){document.write("&nbsp;&nbsp;")}}document.write("<br>");}}// 无参有返回值function jiecheng(){var mul = 1;var sum = 0;for (var i = 1; i <= 10; i++){mul *= i;sum += mul;}return sum;}// 有参无返回值function jiecheng1(a){var mul = 1;var sum = 0;for (var i = 1; i <= a; i++){mul *= i;sum += mul;}console.log(sum);}// 有参有返回值function getSum(a,b){return a + b;}// 函数调用jiujiu();console.log(jiecheng());jiecheng1(10);console.log(getSum(10,20));</script></body>
</html>

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>函数的定义</title></head><body><script>var demo1 = new Function("a,b", "console.log(a+b)");demo1(4,4); /* 匿名函数: 了解 */var demo2  = function(){console.log(77);}demo2();// ES6写法// 无参有返回值var fun1 = () => "Hello";console.log(fun1())// 有参无返回值let fun2 = args =>{console.log(args);}fun2(1024);// 有参有返回值let fun3 = (arg1,arg2) => arg1+arg2// 等价于let fun4 = (arg1,arg2) => {return arg1+arg2}console.log(fun3(10,20))console.log(fun4(10,20))</script></body>
</html>

2.3 JS函数注意事项

  • 方法定义时,形参的类型不用写,返回值类型可写可不写
  • 如果定义名称相同的方法,会被覆盖,js中没有方法的重载的概念
  • 在JS中,方法的调用只与方法的名称有关,和参数列表无关
  • 在方法声明中有一个隐藏的内置对象(数组),arguments,封装所有的实际参数
  • JS函数中也可以有匿名函数,匿名函数经常会跟事件进行结合着使用

3、JS常用内置对象

3.1 Number对象

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>Number对象</title></head><body><script>// number对象属性var max = Number.MAX_VALUE;console.log(max);var min = Number.MIN_VALUE;console.log(min)// number对象方法// toString()  将数字作为字符串返回。var num = 10086;console.log(typeof(toString(num)));// valueOf()  以数字形式返回数字。var num = 12345;console.log(typeof(num.valueOf()));</script></body>
</html>

3.2 String对象

3.2.1 创建对象

有三种方式: 单引号('') 、双引号("") 、反引号(``)

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>String对象</title></head><body><script>// 字符串对象创建//双引号字符串 let s1 = "双引号字符串"; //单引号 let s2 = '单引号字符串'; //反引号字符又叫做`字符串模板` ,模板中可以使用${}来进行插值.let s3 = `反引号字符串`;let n = 3547;	let s5 =`你的验证码是:${n}`;console.log(s5);//你的验证码是:3547// 字符串属性let str = "hello world";console.log(str.length)</script></body>
</html>

3.2.2 常用方法

方法

说明

substring()

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

toLowerCase()

把字符串转换为小写。

toUpperCase()

把字符串转换为大写。

replace()

替换与正则表达式匹配的子串。

charAt()

返回在指定位置的字符。

trim()

移除字符串首尾空白

split(delimiter)

把字符串分割为子字符串数组;分割为数组

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>String对象方法</title></head><body><script>let str = "Hello World";// length	是string对象属性console.log(str.length);// indexOf()  返回字符串中指定文本首次出现的索引(位置)// lastIndexOf()  返回指定文本在字符串中最后一次出现的索引// 如果未找到文本, indexOf() 和 lastIndexOf() 均返回 -1。console.log(str.indexOf('o'));console.log(str.lastIndexOf('o'));console.log(str.indexOf('hello'));// 提取部分字符串// slice(start, end)  提取字符串的某个部分并在新字符串中返回被提取的部分// 如果省略第二个参数,则该方法将裁剪字符串的剩余部分:// 如果参数为负,则从字符串的结尾开始计数。// substring(start, end)  类似于 slice()。// 不同之处在于 substring() 无法接受负的索引。// substr(start, length)  substr() 类似于 slice()。// 不同之处在于第二个参数规定被提取部分的长度。console.log(str.slice(0,5));console.log(str.slice(6));console.log(str.slice(-1));console.log(str.substring(0,5));console.log(str.substring(6));console.log(str.substr(0,5));console.log(str.substr(1,10));// 替换字符串内容// replace()  用另一个值替换在字符串中指定的值:它返回的是新字符串// replace() 只替换首个匹配,replace() 对大小写敏感。let s = str.replace("Hello","hello");console.log(s);// toUpperCase()  把字符串转换为大写console.log(str.toUpperCase());// toLowerCase()  把字符串转换为小写console.log(str.toLowerCase());let str1 = "JavaScript";// concat()  连接两个或多个字符串:console.log(str.concat(str1));let str2 = "   1254   152   ";// trim()  方法删除字符串两端的空白符:console.log(str2.trim());// charAt()  返回字符串中指定下标(位置)的字符串:console.log(str.charAt(0));// split()  将字符串转换为数组:console.log(str.split(" "));</script></body>
</html>

3.3 Math对象

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>Math对象</title></head><body><script>// Math对象属性console.log(Math.PI);console.log(Math.E);// Math对象方法// 取绝对值console.log(Math.abs(-12));// 向上取整console.log(Math.ceil(12.1));// 向下取整console.log(Math.floor(12.9));// 取最大值console.log(Math.max(10,20,30,40,50,100));// 取最小值console.log(Math.min(10,20,30,40,50,100));// x的y次幂console.log(Math.pow(2,3));// 取0-1的随机数console.log(Math.random());// 四舍五入console.log(Math.round(12.5));console.log(Math.round(12.4));</script></body>
</html>

3.4 Array对象

1. JS中,数组元素的类型可变的。

2. JS中,数组长度可变的。

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>数组对象Array</title></head><body><script>// 创建数组对象let arr1 = new Array();let arr2 = new Array(3);let arr3 = ["张三","李四","王五"];// 数组的属性console.log(arr3.length);// 数组的方法// toString()  把数组转成字符串console.log(arr3.toString())// pop()  删除数组最后一个元素,并返回该元素// push()  在数组后追加一个元素,并返回数组长度console.log(arr3.pop());console.log(arr3)console.log(arr3.push("111"));console.log(arr3)// shift()  删除首个数组元素,并返回该元素console.log(arr3.shift());console.log(arr3)// splice(startIndex,len) 从startIndex开始删,删除len个元素 arr3.splice(0,2); console.log(arr3);// concat()  合并数组let arr4 = ["张三","李四","王五"];let arr5 = [11,88,33,44,55];let arr6 = arr4.concat(arr5);console.log(arr6);// 数组排序let arr7 = ["abc","cdf","frv","adf"];console.log(arr7.sort());console.log(arr5.sort(function(a,b){return a-b}));// 数组遍历for (var i = 0; i < arr6.length; i++) {document.write(arr6[i]);document.write(",");}document.write("<br/>");for (let s of arr6) {document.write(s);document.write(",");}document.write("<br/>");for (let a in arr6) {document.write(arr6[a]);document.write(",");}document.write("<br/>");</script></body>
</html>

3.5 Date对象

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>Date对象</title></head><body><script>// 创建日期对象let date = new Date();console.log(date);// 获取年console.log(date.getFullYear());// 获取月console.log(date.getMonth() + 1);// 获取日console.log(date.getDate());// 获取星期console.log(date.getDay());// 获取时console.log(date.getHours());// 获取分console.log(date.getMinutes());// 获取秒console.log(date.getSeconds());// 获取当前的日期字符串console.log(date.toLocaleDateString());// 获取当前的时间字符串console.log(date.toLocaleTimeString());// 获取当前的日期时间字符串console.log(date.toLocaleString());</script></body>
</html>

案例:数字时钟

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>数字时钟</title></head><body><p id="p1"></p><div id="div1"></div><script>setInterval(function(){let date = new Date();document.getElementById("p1").innerHTML = date.toLocaleString();},1000);</script><script>setInterval(() =>{let date1 = new Date();document.getElementById("div1").innerHTML = date1.toLocaleString();},1000);</script></body>
</html>

3.6 RegExp对象

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>正则对象--RegExp</title></head><body><script>// 创建正则表达式对象// 方式一:let reg1 = new RegExp("^[a-zA-Z]{6,9}$");// 正则匹配测试console.log(reg1.test("hellojava")); // true// 方式二:let reg2 = /^[a-zA-Z]{6,9}$/;console.log(reg2.test("helloworld")); // false/*** 正则表达式详解* [] :指定一个字符位置上出现的字符的范围 [abc] 该字符位置出现 a 或 b 或 c* () :指定一个单词整体  *		(abc|bcd|ddd) 这是该位置出现abc 或 bcd 或 ddd 字符串整体,非单个字符* * 元字符* 	. : 匹配换行和结束符的任意一个字符* \w : 表示匹配任意一个字母、数字或下划线  [_a-zA-Z0-9]* \d : 任意一个数字* ^  : 开始* $  : 结束* * 量词* + : 最少出现一次   等同{1,}* * : 0个以上            {0,}* ? : 0个或者1个         {0,1}* * {n}   : 出现n次* {n,}  : 最少出现n次* {n,m} : 最少出现n次,最多出现m次**//*** /^[a-z]{6,9}$/i  表示忽略大小写* /^[a-z]{6,9}$/g  执行全局匹配,而不是在第一个匹配后停止**///字母开头的,其它为任意字符,长度6~8的字符串let reg3 = /^[a-zA-Z].{5,7}$/;			console.log(reg3.test("q1wq#%"));// \w的使用reg3 = /^[\w]{2,3}$/;console.log(reg3.test("_1_"));//检测字符串是否符合当前的正则规则let reg4 = /^[a-zA-Z][\w]+$/;console.log(reg4.test("a112qwe312"));</script></body>
</html>

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

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

相关文章

选择排序 | 冒泡排序 | C语言(详解)

一&#xff0c;选择排序 1&#xff0c;基本知识 对排序的双层 for 循环的理解&#xff1a;外层 控制趟数&#xff0c;里层 不断地对数组进行遍历。 2&#xff0c;逐层深入 经典的选择排序GIF动图&#xff0c;如下&#xff1a; 关键部分&#xff1a; Ⅰ&#xff0c;从数组中…

mathematical-expression 实现 数学表达式解析 Java 篇

mathematical-expression 实现 数学表达式解析 Java 篇 Java技术栏 使用 ME&#xff08; mathematical-expression&#xff09;数学表达式解析库 实现Java中 数学表达式 的解析和计算。 目录 文章目录 mathematical-expression 实现 数学表达式解析 Java 篇目录mathematical-…

面试知识点:notify是随机唤醒线程吗(唤醒线程顺序)?

做 Java 开发的小伙伴&#xff0c;对 wait 方法和 notify 方法应该都比较熟悉&#xff0c;这两个方法在线程通讯中使用的频率非常高&#xff0c;但对于 notify 方法的唤醒顺序&#xff0c;有很多小伙伴的理解都是错误的&#xff0c;有很多人会认为 notify 是随机唤醒的&#xf…

构建中国人自己的私人GPT—与文档对话

先看效果 他可以从上传的文件中提取内容作为答案。上传文件摄取速度 摄取速度取决于您正在摄取的文档数量以及每个文档的大小。为了加快摄取速度&#xff0c;您可以在配置中更改摄取模式。 存在以下摄取模式&#xff1a; simple&#xff1a;历史行为&#xff0c;一次按顺序摄…

超实用桌面助手!时间、日期、天气,一目了然!完全免费!

文章目录 &#x1f4d6; 介绍 &#x1f4d6;&#x1f3e1; 环境 &#x1f3e1;&#x1f4d2; 使用方法 &#x1f4d2;⚓️ 相关链接 ⚓️ &#x1f4d6; 介绍 &#x1f4d6; 这是一款我根据自己的需求写的一个桌面小工具&#xff0c;自己一直在用&#xff0c;现在分享给需要的朋…

纯前端实现了Excel文件转JSON和JSON转Excel下载

需求前提&#xff1a; 上传Excel文件&#xff0c;并将Excel文件的内容拿出来转换为JSON本地定义JSON数据&#xff0c;然后将它封装后转换为Excel文件下载 安装依赖 这两个功能是借助xlsx包实现的&#xff0c;所以需要先安装xlsx包&#xff1a; npm install xlxs依赖引用 i…

【Android Gradle 插件】Gradle 基础配置 ④ ( Gradle Wrapper 配置作用 | Gradle 下载的依赖库存放位置 )

一、Gradle Wrapper 配置作用 gradle wrapperdistributionBaseGRADLE_USER_HOME distributionPathwrapper/dists distributionUrlhttps\://services.gradle.org/distributions/gradle-6.7.1-bin.zip zipStoreBaseGRADLE_USER_HOME zipStorePathwrapper/distsGradle Wrapper 配…

【云原生】Docker的安装和镜像操作

目录 什么是Docker&#xff1f; 容器化越来越受欢迎&#xff0c;因为容器是&#xff1a; Docker与虚拟机的区别&#xff1a; 容器在内核中支持2种重要技术&#xff1a; Docker核心概念&#xff1a; 安装Docker 安装依赖包 设置阿里云镜像源 安装 Docker-CE并设置为开机…

C++设计模式之迭代器模式

【声明】本题目来源于卡码网&#xff08;https://kamacoder.com/&#xff09; 【提示&#xff1a;如果不想看文字介绍&#xff0c;可以直接跳转到C编码部分】 【设计模式大纲】 【简介】 --什么是迭代器模式&#xff08;第19种设计模式&#xff09; 迭代器模式是⼀种行为设计模…

docker-compose搭建redis集群

这里用docker-compose在一台机器搭建三主三从&#xff0c;生产环境肯定是在多台机器搭建&#xff0c;否则一旦这台宿主机挂了&#xff0c;redis集群全挂了&#xff0c;依然是单点故障。同时&#xff0c;受机器性能极限影响&#xff0c;其并发也上不去&#xff0c;算不上高并发。…

web开发学习笔记(14.mybatis基于xml配置)

1.基本介绍 2.基本使用 在mapper中定义 在xml中定义&#xff0c;id为方法名&#xff0c;resultType为实体类的路径 在测试类中写 3. 动态sql&#xff0c;if和where关键字 动态sql添加<where>关键字可以自动产生where和过滤and或者or关键字 where关键字可以动态生成whe…

kafka(一)快速入门

一、kafka&#xff08;一&#xff09;是什么&#xff1f; kafka是一个分布式、支持分区、多副本&#xff0c;基于zookeeper协调的分布式消息系统&#xff1b; 二、应用场景 日志收集&#xff1a;一个公司可以用Kafka收集各种服务的log&#xff0c;通过kafka推送到各种存储系统…

Zabbix 整合 Prometheus:案例分享与操作指南

一、简介 Zabbix 和 Prometheus 都是流行的开源监控工具&#xff0c;它们各自具有独特的优势。Zabbix 主要用于网络和系统监控&#xff0c;而 Prometheus 则专注于开源的分布式时间序列数据库。在某些场景下&#xff0c;将这两个工具整合在一起可以更好地发挥它们的优势&#…

vue3源码(二)reactiveeffect

一.reactive与effect功能 reactive方法会将对象变成proxy对象&#xff0c; effect中使用reactive对象时会进行依赖收集&#xff0c;稍后属性变化时会重新执行effect函数。 <div id"app"></div><script type"module">import {reactive,…

从零学Java MySQL

MySQL 文章目录 MySQL初识数据库思考&#xff1a;1 什么是数据库&#xff1f;2 数据库管理系统 初识MySQLMySQL卸载MySQL安装1 配置环境变量2 MySQL目录结构及配置文件 连接MySQL数据库基本命令MySQL基本语法&#xff1a;1 查看MySQL服务器中所有数据库2 创建数据库3 查看数据库…

leetcode—课程表 拓扑排序

1 题目描述 你这个学期必须选修 numCourses 门课程&#xff0c;记为 0 到 numCourses - 1 。 在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出&#xff0c;其中 prerequisites[i] [ai, bi] &#xff0c;表示如果要学习课程 ai 则 必须 先学习课程 …

《WebKit 技术内幕》学习之五(2): HTML解释器和DOM 模型

2.HTML 解释器 2.1 解释过程 HTML 解释器的工作就是将网络或者本地磁盘获取的 HTML 网页和资源从字节流解释成 DOM 树结构。 这一过程中&#xff0c;WebKit 内部对网页内容在各个阶段的结构表示。 WebKit 中这一过程如下&#xff1a;首先是字节流&#xff0c;经过解码之…

ORBSLAM3安装

0. C11 or C0x Compiler sudo apt-get install gccsudo apt-get install gsudo apt-get install build-essentialsudo apt-get install cmake1. 依赖 在该目录终端。 1. 1.Pangolin git clone https://github.com/stevenlovegrove/Pangolin.git sudo apt install libglew-d…

Python基础第九篇(Python可视化的开发)

文章目录 一、json数据格式&#xff08;1&#xff09;.转换案例代码&#xff08;2&#xff09;.读出结果 二、pyecharts模块介绍三、pyecharts模块入门&#xff08;1&#xff09;.pyecharts模块安装&#xff08;2&#xff09;.pyecharts模块操作&#xff08;1&#xff09;.代码…

C++力扣题目509--斐波那契数 70--爬楼梯 746--最小花费爬楼梯

509. 斐波那契数 力扣题目链接(opens new window) 斐波那契数&#xff0c;通常用 F(n) 表示&#xff0c;形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始&#xff0c;后面的每一项数字都是前面两项数字的和。也就是&#xff1a; F(0) 0&#xff0c;F(1) 1 F(n) F(n -…