算数运算符
加减乘除 取余(求模)
取余的开发用法: 判断某个数字是否能被整除
// 算数优先级:
// 先乘除后加减,有括号先算括号
赋值运算符
=
+= -= *= /= %=
赋值的简便写法:
// +=
let num = 1;
// 相当于: num = num + 1
num += 1; // num == 2
// -=
// 相当于: num = num - 1
num -= 1; // num == 1
// *=
// 相当于: num = num * 2
num *= 2; // 2
// /=
// 相当于: num = num / 2
num /= 2; // 1
// %=
// 相当于: num = num % 2
num %= 2; // 1
一元运算符
自增运算符的用法:
前置自增:先自增,后运算
后置自增:先运算,后自增
let num = 2;
console.log(++num + 2);//5
num = 2;
console.log(num++ + 2);//4
比较运算符
比较两个数的大小,是否相等
返回值是Boolean
字符串类型 和 数字类型作比较的时候;会尝试的吧字符串转化为数字;再做比较
== 等于: 只比较 值的大小
=== 全等: 比较 值的大小 和 类型
!== 不全等
NaN 不等于任何值;包括自身
console.log(NaN == NaN);false
console.log(NaN === NaN);false
console.log(NaN === 222);false
// 尽量不要比较(计算)小数; 小数有精度问题
// 小数在内存中存储方式,会导致精度问题
逻辑运算符
返回值是Boolean
三类:逻辑与 逻辑或 逻辑非
日常说法: 并且 或者 取反
1.逻辑与 &&
// 左边 并且 右边 , 都会true, 返回结构才是true (只要有一个假,结果就是假)
// 一假则假
console.log(true && true);//true
console.log(true && false);//false
console.log(false && true);//false
2.// 逻辑或:||
// 一真则真
console.log(false || true);//true
console.log(true || false);//true
3.// 逻辑非: !
// 取反
// 真变假,假变真
console.log(!true);//false
console.log(!false);//true
短路运算符
取值看是否短路,没短路取后面的值,短路取前面的值。
- 逻辑运算符的使用技巧: 短路
// 只会发生在 && || 里面
&&: 只要左边为 false,右边就被短路
1 < 2 && console.log(123); // 有输出
2 < 2 && console.log(123); // 短路没输出
|| : 只要左边为 true,右边就被短路
1 < 2 || console.log(123); // 短路没输出
2 < 2 || console.log(123); // 有输出
- 短路表达式: 有返回值
console.log("false && 1: ", false && 1); // false
console.log("0 && 1: ", 0 && 1); // 0 注:0是false
console.log("true && 1: ", true && 1); // 1
console.log(" false || 1: ", false || 1); // 1
console.log("1 || false: ", 1 || false); // 1 短路
运算符的优先顺序
先计算,再比较大小,再判断相等,再判断逻辑运算符;
记不住,或者比较长的表达式,应该人为增加(),这样更直观
表达式和语句
表达式:通常会在原地返回一个值; 代码较短
console.log((x = 7));
console.log(3 + 4);
console.log(x++);
console.log(x);
语句:用来描述一件事情,代码量比较长
例如:执行 alert() 弹出对话框,console.log()等
语句的分支语句
if(表达式){...要执行的代码}
表达式: 返回值Boolean型 true / false
// 需求:分数大于700提示考入程序员
let grade = prompt("请输入您的高考成绩:");
if (grade > 700) {
alert("恭喜考入程序员");
}
多分支语句:if,else
if(表达式){..}else if(表达式){...}else .......
// 需求: 根据输入不同时间,输出不同的问候语
let hour = prompt("请输入一个时间:");
if (hour < 12) {
alert("上午好");
} else if (hour < 18) {
alert("下午好");
} else if (hour < 20) {
alert("晚上好");
} else {
alert("开始emo");
}
拓展:补0案例。
三元运算符
1.三元:需要3个操作数
2.表达式:三元表达式会返回一个值
语法: 条件? 满足条件返回这里的执行结果 : 不满足条件返回这里的执行结果
// 需求: 用户输入2个数,控制台输出最大的值
let num1 = +prompt("请输入第一个数字");
let num2 = +prompt("请输入第二个数字");
// 其实就是:双分支语句
console.log(num1 > num2 ? num1 : num2);