运算符,流程控制,循环控制
算术运算符
预算符 | 描述 | 实例 |
---|---|---|
+ | 加 | 12 + 12 |
- | 减 | 12 - 12 |
* | 乘 | 12 * 12 |
/ | 除 | 12 / 12 |
% | 取余 | 12 % 12 |
处理浮点数运算存在精度问题,不要直接判断两个浮点数是否相等;
递增递减运算符
var num = 2;
// 前置递增 递减
console.log(++num); // num = num + 1; 先加1 后返回值
console.log(--num);
// 后置递增 递减
console.log(num++); // num = num + 1; 先返回原值,后 +1
console.log(num--);
比较运算符
比较运算符(关系运算符)是两个数据进行比较时所使用的运算符,比较运算后,会返回一个布尔值(true,false)最为比较的结果
运算符 | 说明 | 案例 |
---|---|---|
> | 大于 | 1 > 2 (false) |
< | 小于 | 1 < 2 (true) |
>= | 大于等于 | 2 >= 2 (true) |
<= | 小于等于 | 2 <= 2 (true) |
== | 判等号(会转型) | 37 == 37 (true) |
!= | 不等于 | 23 != 23 (false) |
=== !== | 全等要求数据类型一致 | 23 === '23' (false) |
逻辑运算符
运算符 | 说明 | 案例 |
---|---|---|
&& | 逻辑 与 简称 与 and | true && false 都为true 才是 true |
|| | 逻辑 或 简称 或 or | `true |
! | 逻辑 非 简称 非 not | !true |
短路运算 当有多个表达式值时,左边的表达式值可以确定结果时,就不再继续运算右边表达式的值;
-
逻辑 与
&&
: 如果第一个表达式为真,则直接返回表达式二;如果第一个表达式为假,则返回表达式一; -
逻辑 或
||
: 如果表达式一 结果为真,则返回表达式一,如果表达式一结果为假,则返回表达式二;
console.log(123 && 321); // 321
console.log(0 && 321); // 0
console.log(null || 123); // 123
console.log(123 || 321); // 123
赋值运算符
运算符 | 说明 | 案例 |
---|---|---|
= | 直接赋值 | var age = 19; |
+=, -= | 加,减一个数后在赋值 | var age = 9; age += 10; // 19 |
*=, /=, %= | 乘,除,取余后在赋值 | var age = 1; age *= 19; //19 |
运算符优先级
() 括号
先 ++ 后 --
先 * / % 后 + -
关系运算符 > >= < <=
相等运算符 == != === !==
逻辑运算符 先 && 后 ||
赋值运算符 =
逗号运算符 ,
流程控制
分支流程控制
代码由上到下执行,根据不同的条件,执行不同路径的代码,从而得到不同的结果
if 语句
// 只有条件表达式结果为true的时候才会执行 if 里面的代码
if (条件表达式) {
// 执行语句1
} else if (条件表达式) { // 不满足 if 语句时,执行 else if
// 执行语句2
} else { // 都不满足 执行 else
// 执行语句3
}
三元表达式
// 条件表达式 ? 表达式1 : 表达式2
var num = 5;
num > 4 ? console.log(true) : console.log(false);
switch 语句
switch 也是多分支语句,它用于基于不同的条件来执行不同的代码,当要针对变量设置一系列的特定值选项时,就可以使用switch;
// 用表达式的值 和 value 值匹配, 如果都不匹配就直接执行 default
// 表达式的值必须和value的值是 全等 值相等,数据类型相等
switch(表达式) {
case value1:
// 执行语句 1
break;
case value2:
// 执行语句 2
break;
...
default:
// 执行语句 n
}
循环流程控制
for循环
for (初始化变量; 条件表达式; 操作表达式) {
// 执行语句
}
// 初始化变量:就是用var声明的一个变量,通常与计数有关
// 条件表达式:就是用来决定每次for循环是否继续执行的终止条件
// 操作表达式:是每次循环最后执行的代码,经常用于计数器变量进行更新(递增或者递减)
多重for循环
// 外层循环执行一次 内层循环执行全部
for (var i = 0; i <= 2; i++) {
console.log('这是外层循环' + i + '次');
for (var j = 0; j <= 2; j++) {
console.log('这是中间循环' + j + '次');
}
}
// 倒三角案例
var str = '';
for (var row = 1; row <= 9; row++) {
for (var col = row; col <= 9; col++) {
str += '😂';
}
str += '\n';
}
console.log(str);
// 乘法表案例
var str = '';
for (var row = 1; row <= 9; row++) {
for (var col = 1; col <= row; col++) {
str += col + ' x ' + row + ' = ' + col * row + '\t';
}
str += '\n';
}
console.log(str);
while循环
// 当条件表达式结果为 true 则执行循环体 否则推出循环
while(条件表达式) {
// 执行语句
}
do while 循环
// 先执行循环体再判断条件,如果条件表达式为真继续执行循环体,否则推出循环;至少执行一次
do {
// 循环体
} while(条件表达式)
continue 关键字
for (var i = 1; i <= 100; i++) {
if (i % 5 == 0) {
continue; // 取余 5 为 0 时,结束本次循环,不在执行 console 语句,直接跳转值 i++;
}
console.log(i);
}
break 关键字
for (var i = 1; i <= 5; i++) {
if (i == 3) {
break; // i 为 3 时,结束整个循环,不在执行整个 for 语句;
}
console.log(i);
}