Js-基础-流程控制

269 阅读4分钟

本文已参与「新人创作礼」活动, 一起开启掘金创作之路。

流程控制

运算符

赋值运算符

赋值运算符:对变量进行赋值

赋值运算符(=)将等号右边的值赋予给左边, 要求左边必须是一个容器

注意=在程序中不是相等的意思,是把等号右边的值赋值给左边边

赋值运算符还有:+=,-=,*=,/=,%=,使用这些运算符可以简化我们的代码

num += 1;   //相当于 num = num +1;
num -= 1;   //相当于 num = num -1;
num *= 1;   //相当于 num = num *1;
num /= 1;   //相当于 num = num /1;
num %= 1;   //相当于 num = num %1;

一元运算符

一元运算符:正负号

前置自增: ++i,前置自减 --i

后置自增:i++ ,后置自减 i--

一元运算符相当于把自身加(减)1,前置先参与运算在进行自增(自减) ,后置先自增(自减)在进行运算

let i = 0;
console.log(i++ + i);
//结果 : 1   这里第一个 i++ 先参与运算是 0 ,然后自增1,所以变成了 0 + 1 = 1
let i = 0;
console.log(++i + i);
//结果 : 2  这里第一个++i先自增1是1 ,然后就是 1 + 1 = 2
​
//自减同理,不多赘述

比较运算符

应用场景:比较两个数据大小、是否相等

>: 左边是否大于右边

<: 左边是否小于右边

>=: 左边是否大于或等于右边

<=: 左边是否小于或等于右边

==: 左右两边值是否相等

===: 左右两边是否类型和值都相等(全等)

!==: 左右两边是否不全等(不全等)

!=: 不等

比较运算符返回值是boolean,正确为true,错误为false

= 单等是赋值 == 是判断 === 是全等

console.log(5 = '5')
//==有隐式转换 在比较中会将 '5'转化为 5,所以它只能判断值,不能判断数据类型

开发中判断是否相等,强烈推荐使用 ===

逻辑运算符

逻辑运算符用来解决多重条件判断

符号名称日常读法特点口诀
&&逻辑与并且符号两边都为true结果才为true一假则假
||逻辑或或者符号两边有一个true就为true一真则真
!逻辑非取反true变false false变true真变假,假变真

运算符优先级

一元运算符里面的逻辑非优先级很高

逻辑与比逻辑或优先级高

优先级运算符顺序
1小括号()
2一元运算符++ -- !
3算术运算符先* / % 后 + -
4关系运算符> >= < <=
5相等运算符== != === !==
6逻辑运算符先 && 后 ||
7赋值运算符=
8逗号运算符,

语句

表达式和语句

表达式是可以被求值的代码,JavaScript 引擎会将其计算出一个结果

(简单来说就是有运算符的式子,比如 num += 1)

语句是一段可以执行的代码

(比如: prompt() 可以弹出一个输入框)

分支语句

从上往下依次执行就是顺序结构

根据条件选择执行代码,这种就叫分支结构

某段代码被重复执行,就叫循环结构

if分支

if语句有三种使用:单分支、双分支、多分支

单分支

/*语法:
if(条件){
    满足条件执行的代码
} */
let num = 1;
if (num = 1){
    console.log(num);
}

括号内的条件为true时,进入大括号里执行代码

小括号内的结果若不是布尔类型时,会发生隐式转换转为布尔类型

双分支

/*语法:
if(条件){
    满足条件执行的代码
}else{
    不满足条件执行的代码
}*/
let num = 1;
if(num = 5){
    console.log('num的值是5')
}else{
    console.log(`num的值是${num}`)
}

多分支

/*语法:
if(条件1){
    满足条件1执行的代码
}else if(条件2){
    满足条件2执行的代码
}...
else{
   不满足以上所有条件执行的代码
}*/
let num = 1;
if(num = 5){
    console.log('num的值是5')
}else if(num = 4){
    console.log('num的值是4')
}else
    {
        console.log(`num的值是${num}`)
    }

三元运算符

语法:

条件 ? 满足条件执行代码1 : 不满足条件执行代码2

let num = 1;
num = 1? document.write('num的值是1'):document.write('num的值不是1');

switch语句

找到跟小括号里数据全等的case值,并执行里面对应的代码

若没有全等 === 的则执行default里的代码

注意事项:

  1. switch case语句一般用于等值判断,不适合于区间判断
  2. switch case一般需要配合break关键字使用 没有break会造成case穿透
/*
语法:
switch (表达式) {
      case1:
        代码1
        break  
      case2:
        代码2
        break  
      case3:
        代码3
        break  
      default:
        代码n
        break
    }
    */
let num = Number(prompt('请输入5以内的数字'));
switch(num){
    case 1:
       alert('你输入的值是1');
       break;
    case 2:
       alert('你输入的值是2');
       break;
    case 3:
       alert('你输入的值是3');
       break;
    case 4:
       alert('你输入的值是4');
       break;
    default:
        alert('你输入的值是5');
        break;
}

case穿透:如果不加break的话,当前case执行完还会继续向下执行第二个case的代码(也可以利用这个特点实现一些效果,比如多个匹配值需要执行相同的代码 时,可以减少代码冗余,比如根据月份判断季节)

循环

循环作用:重复执行一些操作,如while循环 for循环.

while循环

/*语法:
while (循环条件) {
    重复执行的代码(循环体)
}*/
let i = 0;
while (i<10){
    console.log(i);
    i++;
}

循环三要素:

1.变量起始值

2.终止条件(没有终止条件,循环会一直执行,造成死循环)

3.变量变化量(用自增或者自减)

for循环

/*语法:
for(初始化变量;终止条件;变量变化){
    循环体(重复执行的代码)
}
}*/
for (let i = 1; i <= 10; i++) {
        console.log('想吃芒果 ^_^');
 }
//此时上述语句就打印了10句 '想吃芒果 ^_^'

初始化变量;终止条件;变量变化用分号; 隔开

for 循环嵌套

//也就是for循环里面嵌套for循环
//外层for循环执行1次,内部for循环执行多次
for (let i = 1; i <= 10; i++) {
        console.log('想吃芒果 ^_^');
       for(let  j = 0;j<=5;j++){
          console.log(j);
       }
 }
//此时上述语句输出了10个
/*
想吃芒果 ^_^
0
1
2
3
4
5
*/

循环退出

continue 结束本次循环,一般用于排除或者跳过某一个选项的时候, 可以使用continue

break 退出整个循环,一般用于结果已经得到, 后续的循环不需要的时候可以使用