第十七天到第十八天,“如果”可以“重来”

第十七天到第十八天,“如果”可以“重来”

课程目标
继续学习 JavaScript 的一些基本知识,比如if如果判断,for循环等

阅读
W3School 从if-else看到异常
MDN 阅读完JavaScript第一步及JavaScript基础要件

笔记
1.JavaScript If…Else 语句
(1)条件语句
在写代码时,经常会需要基于不同判断执行不同的动作。

可以在代码中使用条件语句来实现这一点。

在 JavaScript 中,我们可使用如下条件语句:

  • 使用 if 来规定要执行的代码块,如果指定条件为 true
  • 使用 else 来规定要执行的代码块,如果相同的条件为 false
  • 使用 else if 来规定要测试的新条件,如果第一个条件为 false
  • 使用 switch 来规定多个被执行的备选代码块

(2)if 语句
语法

if (条件) {
    如果条件为 true 时执行的代码
} 

(3)else 语句
语法

if (条件) {
    条件为 true 时执行的代码块
} else { 
    条件为 false 时执行的代码块
}

(4)else if 语句
语法

if (条件 1) {
    条件 1 为 true 时执行的代码块
} else if (条件 2) {
    条件 1 为 false 而条件 2 为 true 时执行的代码块
 } else {
    条件 1 和条件 2 同时为 false 时执行的代码块
}

2.JavaScript Switch 语句
(1)语法

switch(表达式) {
     case n:
        代码块
        break;
     case n:
        代码块
        break;
     default:
        默认代码块
} 

(2)break 关键词
如果 JavaScript 遇到 break 关键词,它会跳出 switch 代码块。

此举将停止代码块中更多代码的执行以及 case 测试。

如果找到匹配,并完成任务,则随机中断执行(break)。无需更多测试。

break 能够节省大量执行时间,因为它会“忽略” switch 代码块中的其他代码的执行。

不必中断 switch 代码块中的最后一个 case。代码

(3)default 关键词
default 关键词规定不存在 case 匹配时所运行的代码:块在此处会自然结束。

注:如果 default 不是 switch 代码块中最后一个 case,记得用 break 结束默

(4)常见的代码块
有时您会需要不同的 case 来使用相同的代码。

(5)Switching 的细节
如果多种 case 匹配一个 case 值,则选择第一个 case。

如果未找到匹配的 case,程序将继续使用默认 label。

如果未找到默认 label,程序将继续 switch 后的语句。

(6)严格的比较
Switch case 使用严格比较(===)。

值必须与要匹配的类型相同。

只有操作数属于同一类型时,严格比较才能为 true。

3.JavaScript 循环
(1)假如您需要运行代码多次,且每次使用不同的值,那么循环(loop)相当方便使用。

(2)不同类型的循环
JavaScript 支持不同类型的循环:

for - 多次遍历代码块
for/in - 遍历对象属性
while - 当指定条件为 true 时循环一段代码块
do/while - 当指定条件为 true 时循环一段代码块

4.For 循环
(1)for 循环是在您希望创建循环时经常使用的工具。

for 循环的语法如下:

for (语句 1; 语句 2; 语句 3) {
要执行的代码块
}
语句 1 在循环(代码块)开始之前执行。

语句 2 定义运行循环(代码块)的条件。

语句 3 会在循环(代码块)每次被执行后执行。

(2)语句 1
通常,您会使用语句 1 来初始化循环中所使用的的变量(i = 0)。

但情况并不总是这样,JavaScript 不会在意。语句 1 是可选的。

您可以在语句 1 中初始化多个值(由逗号分隔):

实例

for (i = 0, len = computer.length, text = ""; i < len; i++) { 
    text += computer[i] + "<br>";

还可以省略语句 1(比如在循环开始前设置好值):

var i = 0;
var len = computer.length;
var = text = "";
for (i = 0, len = computer.length, text = ""; i < len; i++) { 
    text += computer[i] + "<br>";

(3)语句 2
通常语句 2 用于计算初始变量的条件。

但情况并不总是这样,JavaScript 不会在意。语句 2 也是可选的。

如果语句 2 返回 true,那么循环会重新开始,如果返回 false,则循环将结束。

如果省略语句 2,那么必须在循环中提供一个 break。否则循环永远不会结束。

(4)语句 3
通常语句 3 会递增初始变量的值。

但情况并不总是这样,JavaScript 不会在意。语句 3 也是可选的。

语句 3 可做任何事情,比如负递增(i–),正递增(i = i + 15),或者任何其他事情。

语句 3 也可被省略(比如当您在循环内递增值时)

5.For/In 循环
(1)JavaScript for/in 语句遍历对象的属性

<!DOCTYPE html>
<html>
<body>

<h1>JavaScript 循环</h1>

<p>for/in 语句循环遍历对象的属性。</p>

<p id="demo"></p>

<script>
var text = "";
var person = {name:"Rosy", sex:"女", age:20}; 
var x;
for (x in person) {
  text += person[x] + "<br/>";
}
document.getElementById("demo").innerHTML = text;
</script>

</body>
</html>

6.While 循环
while 循环会一直循环代码块,只要指定的条件为 true。

语法

while (条件) {
    要执行的代码块
}

实例
在下面的例子中,循环中的代码将运行,一遍又一遍,只要变量(i)小于 13:

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript while</h2>

<p id="demo"></p>

<script>
var text = "";
var i = 1;
while (i < 13) {
  text += i+"月<br/>";
  i++;
}
document.getElementById("demo").innerHTML = text;
</script>

</body>
</html>

7.Do/While 循环
do/while 循环是 while 循环的变体。在检查条件是否为真之前,这种循环会执行一次代码块,然后只要条件为真就会重复循环。

语法

do {
    要执行的代码块
}

while (条件);

实例:
下面的例子使用了 do/while 循环。该循环会执行至少一次,即使条件为 false,因为代码块会在条件测试之前执行:

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript do ... while</h2>

<p id="demo"></p>

<script>
var text = ""
var i = 1;

do {
  text += i+"月<br>";
  i++;
}
while (i < 13);  

document.getElementById("demo").innerHTML = text;
</script>

</body>
</html>
  1. For 与 While
    while 循环与 for 循环相当类似,其中的语句 1 和 语句 2 都可以省略。

9.JavaScript Break 和 Continue
(1)Break 语句
它被用于“跳出” switch 语句。
break 语句也可用于跳出循环。

break 语句会中断循环,并继续执行循环之后的代码(如果有)

(2)Continue 语句
continue 语句中断(循环中)的一个迭代,如果发生指定的条件。然后继续循环中的下一个迭代。

10.JavaScript 类型转换
(1)JavaScript 数据类型
JavaScript 中有五种可包含值的数据类型:

字符串(string)
数字(number)
布尔(boolean)
对象(object)
函数(function)

(2)有三种对象类型:

对象(Object)
日期(Date)
数组(Array)

(3)同时有两种不能包含值的数据类型:

null
undefined

11.typeof 运算符
可以使用 typeof 运算符来确定 JavaScript 变量的数据类型。

注:
NaN 的数据类型是数值
数组的数据类型是对象
日期的数据类型是对象
null 的数据类型是对象
未定义变量的数据类型是 undefined
尚未赋值的变量的数据类型也是 undefined

12.ypeof 的数据类型
typeof 运算符不是变量。它属于运算符。运算符(比如 + - * /)没有数据类型。

但是,typeof 始终会返回字符串(包含运算数的类型)。

13.constructor 属性
constructor 属性返回所有 JavaScript 变量的构造器函数。
可以通过检查 constructor 属性来确定某个对象是否为数组(包含单词 “Array”)

注:
===:三个等号我们称为等同符,当等号两边的值为相同类型的时候,直接比较等号两边的值,值相同则返回true,若等号两边的值类型不同时直接返回false。

14.JavaScript 类型转换
JavaScript 变量能够被转换为新变量以及另一种数据类型:

  • 通过使用 JavaScript 函数
  • 通过 JavaScript 本身自动转换

15.把数值转换为字符串
全局方法 String() 能够把数字转换为字符串。

它可用于任意类型的数字、文字、变量或表达式

16.把布尔转换为字符串
全局方法 String() 能够将布尔转换为字符串。

String(false)        // 返回 "false"
String(true)         // 返回 "true" 

布尔方法 toString() 同理。

false.toString()     // 返回 "false"
true.toString()      // 返回 "true"

17.把日期转换为字符串
全局方法 String() 可将日期转换为字符串。

String(Date())      // 返回 "Tue Oct 27 2020 08:41:45 GMT+0800 (中国标准时间)"

18.日期方法 toString() 同理。

实例

Date().toString()   // 返回 "Tue Oct 27 2020 08:41:45 GMT+0800 (中国标准时间)"

19.把字符串转换为数值
全局方法 Number() 可把字符串转换为数字。

包含数字的字符串(比如 “3.14”)转换为数字(比如 3.14)。

空的字符串转换为 0。

其他字符串将转换为 NaN(Not a number,不是数字)。

Number(“3.14”) // 返回 3.14
Number(" “) // 返回 0
Number(”") // 返回 0
Number(“99 88”) // 返回 NaN

20.一元 + 运算符
一元的 + 运算符可用于把变量转换为数字:
实例

var y = "6";      // y 是字符串
var x = + y;      // x 是数字

如果无法转换变量,则仍会成为数字,但是值为 NaN(Not a number):

实例

var y = "Rosy";   // y 是字符串
var x = + y;      // x 是数字 (NaN)

21.把布尔转换数值
全局方法 Number() 也可把布尔转换为数字。

Number(false)     // 返回 0
Number(true)      // 返回 1

22.把日期转换为数字
全局方法 Number() 可用于把日期转换为数字。

d = new Date();
Number(d)          // 返回 1603759305744

日期方法 getTime() 同理。

d = new Date();
d.getTime()        // 返回 1603759305745

22,自动类型转换
如果 JavaScript 尝试操作一种“错误”的数据类型,它会试图将该值转换为“正确”的类型。

结果并不总是你所期望的:

5 + null    // 返回 5         因为 null 被转换为 0
"5" + null  // 返回 "5null"   因为 null 被转换为  "null"
"5" + 2     // 返回 52        因为 2 被转换为 "2"
"5" - 2     // 返回 3         因为 "5" 被转换为 5
"5" * "2"   // 返回 10        因为 "5""2" 被转换为 5 和 2

23.自动字符串转换
JavaScript 自动调用变量的 toString() 函数,当您试图“输出”对象或变量时:

document.getElementById("demo").innerHTML = myVar;

// 如果 myVar = {name:"Fjohn"}  // toString 转换为 "[object Object]"
// 如果 myVar = [1,2,3,4]       // toString 转换为 "1,2,3,4"
// 如果 myVar = new Date()      // toString 转换为 "Tue Oct 27 2020 08:41:45 GMT+0800 (中国标准时间)"

24.JavaScript 位运算符

在这里插入图片描述
实例:
在这里插入图片描述

25.JavaScript 正则表达式
(1)什么是正则表达式?
正则表达式是构成搜索模式的字符序列。
当搜索文本中的数据时,可使用搜索模式来描述你搜索的内容。
正则表达式可以是单字符,或者更复杂的模式。
正则表达式可用于执行所有类型的文本搜索和文本替换操作。

语法

/pattern/modifiers;

实例

var patt = /w3school/i;

例子解释:
/w3school/i 是一个正则表达式。

w3school 是模式(pattern)(在搜索中使用)。

i 是修饰符(把搜索修改为大小写不敏感)

26.使用字符串方法
在 JavaScript 中,正则表达式常用于两个字符串方法:search() 和 replace()。

search() :使用表达式来搜索匹配,然后返回匹配的位置。
replace() :返回模式被替换处修改后的字符串。

27.使用字符串方法 search() 来处理字符串
search() 方法也接受字符串作为搜索参数。字符串参数将被转换为正则表达式:

实例
使用字符串来执行对 “W3school” 的搜索:

var str = "Visit W3School!";
var n = str.search("W3School");

结果:6

28.在字符串方法 search() 中使用正则表达式
实例
使用正则表达式执行搜索字符串中 “w3school” 的大小写不敏感的搜索:

var str = "Visit W3School";
var n = str.search(/w3school/i); 

n 中的结果是:6

29.使用字符串方法 replace() 处理字符串
replace() 也接受字符串作为搜索参数:

var str = "Study English!";
var res = str.replace("English", "Math"); 

30.在字符串方法 replace() 中使用正则表达式
实例
使用大小写不明的正则表达式以 English 来替换字符串中的 Math:

var str = "Study English!";
var res = str.replace("English", "Math");; 

res 的结果将是:Study Math!

31.正则表达式修饰符
修饰符可用于大小写不敏感的更全局的搜素:
在这里插入图片描述
31.正则表达式模式
括号用于查找一定范围的字符串:
在这里插入图片描述
32.元字符(Metacharacter)是拥有特殊含义的字符:

33.Quantifiers 定义量词:
在这里插入图片描述
34.使用 test()
test() 是一个正则表达式方法。
它通过模式来搜索字符串,然后根据结果返回 true 或 false。
下面的例子搜索字符串中的字符 “q”:

实例

var patt = /q/;
patt.test("qing ni chi fan!"); 

由于字符串中有一个 “q”,以上代码的输出将是:
true

35.exec() 方法是一个正则表达式方法。

它通过指定的模式(pattern)搜索字符串,并返回已找到的文本。

如果未找到匹配,则返回 null。

下面的例子搜索字符串中的字符 “q”:

实例

/q/.exec("qing ni chi fan");

由于字符串中有一个 “q”,以上代码的输出将是:q

36.JavaScript 错误 - Throw 和 Try to Catch

  • try 语句使我们能够测试代码块中的错误。
  • catch 语句允许我们处理错误。
  • throw 语句允许我们创建自定义错误。
  • finally 使我们能够执行代码,在 try 和 catch 之后,无论结果如何。

37.JavaScript try 和 catch
try 语句允许我们定义一个代码块,以便在执行时检测错误。

catch 语句允许我们定义一个要执行的代码块,如果 try 代码块中发生错误。

JavaScript 语句 try 和 catch 成对出现:

try {
     供测试的代码块
}
 catch(err) {
     处理错误的代码块
} 

38.JavaScript 抛出错误

  • 当发生错误时,JavaScript 通常会停止并产生错误消息。
  • 技术术语是这样描述的:JavaScript 将抛出异常(抛出错误)。
  • JavaScript 实际上会创建带有两个属性的 Error 对象:name 和 message。

39.throw 语句

  • throw 语句允许我们创建自定义错误。
  • 从技术上讲您能够抛出异常(抛出错误)。
  • 异常可以是 JavaScript 字符串、数字、布尔或对象:
throw "Too big";    // 抛出文本
throw 500;          //抛出数字

如果把 throw 与 try 和 catch 一同使用,就可以控制程序流并生成自定义错误消息。

40.finally 语句
finally 语句允许您在 try 和 catch 之后执行代码,无论结果:

try {
     供测试的代码块
}
 catch(err) {
     处理错误的代码块
} 
finally {
     无论 try / catch 结果如何都执行的代码块
}

41.Error 对象
JavaScript 拥有当错误发生时提供错误信息的内置 error 对象。

error 对象提供两个有用的属性:name 和 message。

42.Error 对象属性
在这里插入图片描述
43.Error Name Values
error 的 name 属性可返回六个不同的值:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 章节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 章节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值