算术运算符
数学运算符也叫算术运算符,只要是加减乘除
+:求和 -:求差 *:求积 /:求商 %:取模(取余数) 如:
5 % 3 =2
%开发中经常用来判断是否被某个数整除
算术运算符的优先级
同时使用多个运算符编写程序时,会按着某种顺序先后执行,我们称为优先级 JavaScript中 优先级越高越先被执行,优先级相同时以书从左向右执
- 乘、除、取余优先级相同
- 加、减优先级相同
- 乘、除、取余优先级大于加、减
- 使用 () 可以提升优先级
总结:先乘除后加减,有括号先算括号
赋值运算符
简单赋值运算符=
sum = 0;
+=
sum += 1 //即是sum = sum + 1
-=
sum -= 1 // sum = sum - 1
*=、/=、%= 由此类推,使用赋值运算符能简化代码
一元运算符
一元运算符都用自增减操作
自增:符号++
let i = 0
i++ //i加1操作
自减:符号--
let i = 1
i-- //i减1操作
开发中经常用于计数操作,多用于循环体
自增减分为前后置
前置自增:
let num = 1
let i = 0
num = ++i //此时i先自增再赋值,num = 2
后置自增:
let num = 1
let i = 0
num = i++ //此时i先赋值再自增,num = 1
自减也是由此
经典案例:
let i = 1
console.log(i++ + ++i + i);//7 这确实有点懵,多理解理解
比较运算符
| 左边是否大于右边 | |
|---|---|
| < | 左边是否小于右边 |
| >= | 左边是否大于或等于右边 |
| <= | 左边是否小于或等于右边 |
| == | 左右两边是否相等 |
| === | 左右两边是否类型和值都相等 |
| !== | 左右两边是否不全等 |
比较的结果为布尔值(boolean类型):true、false
-
字符串比较,是比较的字符对应的ASCII码
-
NaN不等于任何值,包括它本身 (但NaN的布尔值为false)
-
尽量不要比较小数,因为小数有精度问题
-
不同类型之间比较会发生隐式转换
- 最终把数据隐式转换转成number类型再比较
- 所以开发中,如果进行准确的比较我们更喜欢 === 或者 !==
= 、== 、===的区别:
- =是赋值
- ==是判断值是否相等
- ===是全等判断值和类型是否相等
逻辑运算符
| 符号 | 名称 | 日常读法 | 特点 | 口诀 | ||
|---|---|---|---|---|---|---|
| && | 逻辑与 | 并且 | 符号两边都为true结果才为true | 一假则假 | ||
| 逻辑或 | 或者 | 符号两边有一个true就为true | 一真则真 | |||
| ! | 逻辑非 | 取反 | true变false、false变true | 真变假,假变真 | ||
逻辑运算符的短路
&&、||满足以下条件会短路操作
| 符号 | 短路 | ||
|---|---|---|---|
| && | 左边为false时 | ||
| 左边为true时 |
案例:
&&
console.log(false && 20);//false
console.log(5 < 3 && 20);//false
console.log(10 && 20);//20
||
console.log(false || 20);//20
console.log(5 < 3 ||20);//20
console.log(10 ||20);//10
逻辑运算符练习小案例(判断是否闰年)
<script>
// 闰年的判断条件能被4整除(%4==0)且不能被100整除(%100!=0)或者能被400整除(%400==0)
let year = prompt(' 请输入年份:')
if ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0) {
document.write(`${year}年是闰年`)
} else {
document.write(`${year}年不是闰年`)
}
</script>
运算符的优先级
| 优先级 | 运算符 | 顺序 | ||
|---|---|---|---|---|
| 1 | 小括号 | () | ||
| 2 | 一元运算 | ++ - ! | ||
| 3 | 算数运算符 | 先*/%后+ - | ||
| 4 | 关系运算符 | > >= < <= | ||
| 5 | 相等运算符 | == != === !== | ||
| 6 | 逻辑运算符 | && | ||
| 7 | 赋值运算符 | = |
一元运算符里面的逻辑非优先级最高 逻辑与比逻辑或优先级高
案例:
let a = 3 > 5 && 2 < 7 && 3 == 4
console.log(a); //flase
let b = 3 <= 4 || 3 > 1 || 3 != 2
console.log(b); //true
let c = 2 === "2"
console.log(c); //false
let d = !c || b && a
console.log(d);//true
语句
表达式
表达式是一组代码的集合,JavaScript解释器会将其计算出一个结果
x = 7
1 + 1
num++
语句
js 整句或命令,js 语句是以分号结束(可以省略)
如:if语句、for循环
分支语句
if语句
if语句有三种使用:单分支、双分支、多分支
单分支:
if(条件){
}
多分支:
if(条件){
}esle if(条件){
}...{
}esle{
}
*小括号内的结果若不是布尔类型时,会发生隐式转换转为布尔类型
三元运算符
格式:条件 ?满足条件执行的代码 :不满足条件执行的代码
2 < 3 ? console.log("3比较大") : console.log("2比较大")
案例:
let num1 = prompt(""), num2 = prompt("")
let max = num1 > num2 ? num1 : num2
console.log(`最大的数是:${max}`);
分支语句实战案例:
简易计算机:
//接收用户选择的运算方式与计算的数字
let cout = prompt('选择运算+、-、*、/'), num1 = +prompt('数字1'), num2 = +prompt('数字2')
//判断用户选择的运算方式+、-、*、/
if (cout == '*') {
alert(`${num1}*${num2}=${num1 * num2}`)
} else if (cout == '+') {
alert(`${num1}+${num2}=${num1 + num2}`)
} else if (cout == '/') {
alert(`${num1}/${num2}=${num1 / num2}`)
} else {
alert(`${num1}-${num2}=${num1 - num2}`)
}