1:分支语句
1.1:if语句
//1:if的语法结构 如果if
// if (条件表达式) {
// //条件成立执行语句
// }
//2:执行思路 如果if 里面条件表达式 为真 true 则执行 大括号里面的 执行语句
// 如果if 条件表达式 结果为假 则不执行 大括号里面的 语句 则执行 if后面的代码
if (3 < 5) {
alert('我是熊二');
}
1.2:双分支 if else 语句
//1:语法结构 if 如果 else 否则
if (条件表达式) {
//执行语句1
} else {
// 执行语句二
}
// 2: 执行思路 如果表达式为真 执行语句1 否则执行语句2
1.3:多分支语句 if else if 语句
// if else if语句
if (条件表达式1) {
//语句1
} else if (条件表达式二) {
// 语句2
} else if (条件表达式三) {
// 语句3
} else {
//最后语句
}
1.4:三元表达式
//1.有三元运算符组成的式子我们称为三元表达式‘
//2. ++num 3+5
//3:语法结构
// 条件表达式 ? 表达式1:表达式2
// 4:执行思路
// 如果条件表达式结果为真 则 返回表达式1 的值 如果条件表达式结果为假 则返回表达式 2 的值
var num = 10;
var result = num > 5 ? '是的' : '不是的';;
console.log(result);
2:switch 语句
switch 语句也是分支语句 它用于基于不同的条件来执行不同的代码,
当要针对变量设置一系列的特定值的选项时,就可以使用switch
1.switch 语句也是多分支语句 也可以实现多选1
2.语法结构 switch 转换 开关 case 小例子 选项的意思
switch (表达式) {
case value1:
执行语句1;
break;
case value2:
执行语句2;
break;
...
default:
执行最后的语句;
}
3:执行思路 利用我们表达式的值 和case 后面的选项值相匹配 如果 匹配上就执行case里面的语句
如果都没有匹配上,那么执行default里面的语句
// 4:代码验证
switch (2) {
case 1:
console.log('苹果');
break;
case 2:
console.log('香蕉');
break;
case 3:
console.log('葡萄');
break;
default:
console.log('没有匹配结果');
}
//switch 注意事项
//2:在开发里表达式写成变量
// 2:我们num的值和case 里面的值相匹配的时候是全等 必须是值和数据类型一致才可以
// 3:break 如果当前的case 里面没有break 则不会退出switch 是继续执行下一个case
var num = 3;
switch (num) {
case 1:
console.log(1);
case 3:
console.log(3);
break;
}
注意:
case代码块中break不能省略
default可以放到代码任意位置,break不能省略,最后位置可以省略break;
变量与常量对比使用”===“
3:循环语句
JavaScript 支持不同类型的循环:
for - 循环代码块一定的次数
for/in - 循环遍历对象的属性
while - 当指定的条件为 true 时循环指定的代码块
do/while - 同样当指定的条件为 true 时循环指定的代码块
3.1:for循环
for (初始化变量; 条件表达式; 操作表达式) {
//循环体
}
1:初始化变量: 就是用var 声明的一个普通变量
2:条件表达式: 就是用来决定每一次循环是否执行 就是终止条件
3: 操作表达式 是每次循环最后执行的代码
for (var i = 1; i <= 100; i++) {
console.log('你好');
}
//1.首先执行 里面的计数器 变量var i=1. 但是这句话在for里面只执行一次
//2.去i<=100 来判断 是否满足条件 就去执行 循环体 不满足条件退出循环
//3.最后去执行i++;
//4.接着去执行i<=100如果满足条件就去执行循环体 循环体执行结束执行 i++
双重for循环
// 双重for循环 语法结构
for (外层的初始化变量; 外层的条件表达式; 外层的操作表达式) {
for (里层的初始化变量; 里层的条件表达式; 里层的操作表达式) {
//执行语句
}
}
//1:我们可以把里面的循环看做是外层循环语句
// 2 :外层循环循环一次 ,里面的循环执行全部
for in循环
for..in用于遍历数组或者对象的属性
for(自定义变量名 in 数组/对象){
执行代码
//循环数组
var arr=[10,'aa',20,30,40];
for(var i=0;i<arr.length;i++){
console.log(i+"--"+arr[i]);
}
for(var key in arr){
console.log(key+"--"+arr[key]);
}
//循环对象属性:
var obj = {
name:"briup",
age:12,
salary:10000
};
/*
两种方式访问属性:
objectName.propertyName
或者
objectName["propertyName"]
*/
console.log(obj.name);
console.log(obj["age"]);
console.log(obj.salary);
for(var key in obj){
console.log(key+"--"+obj[key]);
}
3.2:while循环
//while 循环语法结构 while 当...的时候
while (条件表达式) {
//循环体
//
}
// 2:执行思路 当表达式结果为true 则执行循环体 否则 退出循环体
3.3:do while循环
// do while
do {
//循环体
} while (条件表达式)
// 2:执行思路 跟while 不同的地方在于do while 先执行一次循环体 再判断条件 如果表达式结果为真,则继续执行循环体,否则退出循环
4:递归
递归是一种编程模式,在一个任务可以自然地拆分成多个相同类型但更简单的任务的情况下非常有用。或者,在一个任务可以简化为一个简单的行为加上该任务的一个更简单的变体的时候可以使用。或者,就像我们很快会看到的那样,处理某些数据结构。
当一个函数解决一个任务时,在解决的过程中它可以调用很多其它函数。在部分情况下,函数会调用 自身。这就是所谓的 递归。
递归思路:简化任务,调用自身:
function pow(x, n) {
if (n == 1) {
return x;
} else {
return x * pow(x, n - 1);
}
}
alert( pow(2, 3) ); // 8
请注意,递归变体在本质上是不同的。
当
pow(x, n)
被调用时,执行分为两个分支:
if n==1 = x
/
pow(x, n) =
\
else = x * pow(x, n - 1)
- 如果
n == 1
,所有事情都会很简单,这叫做 基础 的递归,因为它会立即产生明显的结果:pow(x, 1)
等于x
。- 否则,我们可以用
x * pow(x, n - 1)
表示pow(x, n)
。在数学里,可能会写为xn = x * xn-1
。这叫做 一个递归步骤:我们将任务转化为更简单的行为(x
的乘法)和更简单的同类任务的调用(带有更小的n
的pow
运算)。接下来的步骤将其进一步简化,直到n
达到1
。我们也可以说
pow
递归地调用自身 直到n == 1
。
比如,为了计算
pow(2, 4)
,递归变体经过了下面几个步骤:
pow(2, 4) = 2 * pow(2, 3)
pow(2, 3) = 2 * pow(2, 2)
pow(2, 2) = 2 * pow(2, 1)
pow(2, 1) = 2
因此,递归将函数调用简化为一个更简单的函数调用,然后再将其简化为一个更简单的函数,以此类推,直到结果变得显而易见。