文章目录
1. 四则运算±*/%
取模(取余数),开发中经常用于作为某个数字是否被整除。
求%应用场景:
- 发牌案例
- 倒计时效果
- 查找水仙花数(一个三位数,每一位上数的立方和等于它本身)
- 查找回文(正读和倒读是一样的 1221)
let a = 55 - 60 + 20;
let b = 12;
let c = 13;
let d = "12";
//比较> < >= <= 1=(等价于-不判断类型) !==(等价===判断类型的)
console.log(b > c); //false
console.log(b < c); //true
console.log(b != c); //true1og
console.log(b != d); //false
console.log(b !== d); //true
js 小数在某些情况下,显示的是一个无限接近的数。类似:switch语句中case后面的值不能是小数。
console.log(0.1 + 0.2); //0.30000000000000004
1.1. 练习
弹框录入一个 3 位数,求每一位上的数相加的和。
-
解决方法一
//录入数据 let num = prompt("请输一个三位数"); //求每一位上的数 let ge = num % 10; let shi = parseInt(num / 10) % 10; let bai = parseInt(num / 100) % 10; console.log("每一位上的数之和是:" + (ge + shi + bai));
-
解决方法二
let num = prompt("请输入一个3位数"); let sum = 0; sum += parseInt(num[0]); sum += parseInt(num[1]); sum += parseInt(num[2]); console.log(sum);
2. 自增自减运算符
在自身的基础上加 1 或者减 1,语法:变量++ 或者 变量--
++在前,先自增再运算。
++在后,先运算再自增。
2.1. 练习
//计算最终a的值和b的值
var a = 5;
var b = ++a + a-- + a++;
console.log(a, b); //6,17
3. 比较运算符
结果是 boolean 类型。
运算符 | 作用 |
---|---|
> | 左边是否大于右边 |
< | 左边是否小于右边 |
>= | 左边是否大于或等于右边 |
<= | 左边是否小于或等于右边 |
=== | 左右两边是否类型 和值 都相等(重点) |
== | 左右两边值 是否相等 |
!= | 左右值不相等 |
!== | 左右两边是否不全等 |
了解:
NaN 比较 六亲不认 它的比较没有意义。
console.log(NaN === NaN); //false
console.log(NaN !== NaN); //true
4. 逻辑运算
与:&&当且仅当两边都为 true 才返回 true,同真为真,一假为假。
或:||一边为 true,返回 true,一真为真,同假为假。
非:!取反,真变假,假变真。
let d = "12";
let e = 0;
console.log(e && d); //0
console.log(e || d); //12
console.log(!e); //true
4.1. 应用
择偶标准 年龄在 20-30 岁之间。
let age = 50;
console.log(20 < age < 30); //true 只判断前面的,后面忽略
console.log(20 < age && age < 30); //false
判断闰年
弹框录入一个年份,判断这个年份是否是闰年
- 能被 4 整除,不能被 100 整除
- 能被 400 整除
let year = +prompt("请输入一个年份");
let flag = (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
// 判断
if (flag) {
alert(year + "年是闰年");
} else {
alert(year + "年不是闰年");
}
4.2. 逻辑与短路问题
如果左边表达式不成立(已经确定了整个表达式是 false),右边就没有必要执行,就发生了短路,可以提高效率。
let num1 = 3;
let num2 = 4;
console.log(num1++ < 2 && num2++ > 3); //false
console.log(num1); //4
console.log(num2); //4 num2并没有参与运算
4.3. 逻辑或短路问题
如果左边表达式成立(已经确定了整个表达式是 true),右边就没有必要执行,就发生了短路,可以提高效率。
let num3 = 3;
let num4 = 4;
console.log(num3++ > 2 || num4++ > 3); //true
console.log(num3); //4
console.log(num4); //4 num4并没有参与运算
5. 基本赋值元素符
=
赋值,=
和 ==
区别:
let num = 20;
console.log(num == 100); //false 比较运算符
console.log((num = 100)); //100 赋值运算符 最终结果是100(将100赋给num,然后再打印num的值)
6. 复合赋值运算符
+=
累加
-=
累减
*=
累乘
/=
累除
%=
累取余
7. 三元表达式 a?b:c*
有三个元素参与元素。语法:表达式/变量a ? 表达式/变量b : 表达式/变量c
a 如果为 true,返回 b,否则返回 c
//使用三元求三个数的最大值
let n1 = 10;
let n2 = 30;
let n3 = 20;
//先求n1和n2最大值
let temp = n1 > n2 ? n1 : n2;
//再和n3进行比较
let res = n3 > temp ? n3 : temp;
console.log(res);