一、条件语句
条件语句基于不同的条件来执行不同的动作
1.if语句:只有当指定条件为true时,使用该语句来执行代码
2.if...else语句:当条件为true时执行代码,当条件为else时执行其他代码
3.if...else if...else语句:使用该语句来选择多个代码块之一来执行
4.switch语句:使用该语句来选择多个代码块之一来执行
1.if语句
由一个布尔表达式后跟一个或多个语句组成
语法:
if(boolean_expression){
# 在布尔表达式 boolean_expression 为 true 执行
}
如果布尔表达式为true,则if内的语句块会被执行,否则if语句后的第一组代码将被执行
2.if...else语句
一个if语句后面一个可选的else语句,else在布尔表达式为false时被执行
语法
if(boolean_expression){
# 在布尔表达式 boolean_expression 为 true 执行
}else{
# 在布尔表达式 boolean_expression 为 false 执行
}
3.if...else if...else语句
在执行多个判断条件时有用
语法
if(boolean_expression 1) {
# 在布尔表达式 boolean_expression 1 为 true 执行
} else if( boolean_expression 2) {
# 在布尔表达式 boolean_expression 2 为 true 执行
} else if( boolean_expression 3) {
# 在布尔表达式 boolean_expression 3 为 true 执行
} else {
# 布尔表达式的条件都为 false 时执行
}
注:
1.一个if判断语句可以有0或1个else语句,必须在if...else后面
2.一个if判断语句可以有0个或者多个else...if,必须在else之前
3.一旦执行了else...if里的代码,后面的else...if或else将不再执行
4.switch...case语句
允许测试一个变量等于多个值时的情况,每个值为一个case,且被测试的变量会对每个switch case进行检查
语法:
switch(expression){
case constant-expression :
statement(s);
break; /* 可选的 */
case constant-expression :
statement(s);
break; /* 可选的 */
/* 您可以有任意数量的 case 语句 */
default : /* 可选的 */
statement(s);
}
规则:
1.switch 语句中的 expression 是一个要被比较的表达式,可以是任何类型,包括基本数据类型(如 number、string、boolean)、对象类型(如 object、Array、Map)以及自定义类型(如 class、interface、enum)等。
2.在一个 switch 中可以有任意数量的 case 语句。每个 case 后跟一个要比较的值和一个冒号。
3.case 的 constant-expression 必须与 switch 中的变量 expression 具有相同或兼容的数据类型。
4.当被测试的变量等于 case 中的常量时,case 后跟的语句将被执行,直到遇到 break 语句为止。
5.当遇到 break 语句时,switch 终止,控制流将跳转到 switch 语句后的下一行。
6.不是每一个 case 都需要包含 break。如果 case 语句不包含 break,控制流将会 继续 后续的 case,直到遇到 break 为止。
7.一个 switch 语句可以有一个可选的 default case,出现在 switch 的结尾。default 关键字则表示当表达式的值与所有 case 值都不匹配时执行的代码块。default case 中的 break 语句不是必需的。
二、循环
1.for循环
用于多次执行一个语句序列,减缓管理循环变量的代码
语法:
for ( init; condition; increment ){
statement(s);
}
流程解析:
1.init会先被执行,且只会执行一次,这一步允许声明并初始化任何循环控制变量,也可以在这里不屑任何语句,一个;即可
2.然后会判断condition,如果为true,则执行循环主体,如果为false,则不执行主体,且控制流会跳转到紧接着for循环的下一条语句
3.在执行完for循环主体后,控制流会跳回上面的increment语句,允许更新循环控制变量,可以留空
4.条件再次被判断,如果为true,则执行循环,过程不断重复,在条件为false时,结束循环
2.for...in循环
用于一组值的集合或列表进行迭代输出
语法:
for (var val in list) {
//语句
}
val需要为string或any类型
3.for...of,forEach,every和some循环
1.for...of语句创建一个循环来迭代可迭代的对象,在ES6中引入的for..of循环,以替代for...in和forEach(),并支持新的迭代协议,for...of允许遍历Arrays(数组),Strings(字符串),Maps(映射),Sets(集合)等可迭代的数据结构等
let someArray = [1, "string", false];
for (let entry of someArray) {
console.log(entry); // 1, "string", false
}
2.forEach,every和some是javaScript的循环语法,TypeScript为JavaScript的超集,所以支持
因为forEach在iteration中是无法返回的,所以可以使用every和some来取代forEach
//forEach循环
let list = [4, 5, 6];
list.forEach((val, idx, array) => {
// val: 当前值
// idx:当前index
// array: Array
});
//every循环
let list = [4, 5, 6];
list.every((val, idx, array) => {
// val: 当前值
// idx:当前index
// array: Array
return true; // Continues
// Return false will quit the iteration
});
4.while循环
while语句在指定条件为true时,重复执行语句或语句组,循环主体之前会先测试条件
语法:
while(condition)
{
statement(s);
}
statement(s)可以是一个单独的语句,也可以是几个语句组成的代码块
condition可以是任意的表达式,当条件为true时执行循环,当条件为false时,循环退出
5.do...while循环
不像for和while循环,他们是循环头部测试循环条件,do...while是在尾部测试循环条件
语法:
do
{
statement(s);
}while( condition );
因为条件表达式语句在尾部,所以循环中的statement(s)会在条件被测试之前至少执行一次
如果条件为true,控制流会跳转回上面的do,然后重新执行循环中的statement(s),这个过程会不断重复,直到条件为false为止
6.break语句
两种特性:
1.break出现在一个循环体内时,循环会立刻终止,切程序流会紧接着循环下一条语句
2.可用于终止switch语句中的一个case
如果使用的是嵌套循环,break语句会停止执行最内层的循环,然后开始执行模块之后的下一行代码
语法:
break;
7.continue语句
continue语句有点像break语句,但是他是跳过当前循环中的代码,强制执行下一次循环
对于for循环,continue语句执行后自增语句仍会执行,对于while和do...while循环,continue语句会重新执行条件判断语句
语法:
continue;
8.无限循环
一直在运行不会停止的循环,for和while都可以创建无限循环
for创建无限循环语法格式:
for(;;) {
// 语句
}
while创建无限循环语法格式:
while(true) {
// 语句
}
三、函数
函数是一组一起执行一个任务的语句