Javascript运算符和表达式
运算符:用于执行程序代码运算的符号
表达式:由操作数和运算符组成
一、算术表达式
1. 算术运算符
意义 | 运算符 |
---|---|
加 | + |
减 | - |
乘 | * |
除 | / |
取余 | % |
2. 相关说明
- 加减的符号和数学一致,乘法是*号,除法是/号
- 默认情况,乘除法的优先级要高于加法和减法;必要时可以使用圆括号来改变运算的顺序
1 + 2 * 3; // 7 (1 + 2) * 3; // 9 1 + 2 / 4; // 1.5 ((1 + 2) * 3 + 4) / 2; // 6.5
- 加号有“加法”和“连字符”两种作用,如果加号两边的操作数都是数字,则为“加法”,否则为连字符
- 取余运算也叫作“求模运算”,用百分号“%”表示
11 % 4; //3,因为11除以4余数是3 20 % 6; //2,因为20除以6余数是2 12 % 3; //0,因为能够整除,余数是0 9 % 3; //0,因为能够整除,余数是0 3 % 9; //3,因为商0,余数是3
- 隐式类型转换:如果参与参与数学运算的某操作数不是数字型,那么JavaScript会自动将此操作数转换为数字型,隐式转换的本质是内部调用Number()函数
3 * '4' //12 true + true //2 false + 2 //2 3 * '2天' //NaN
- JavaScript使用了IEEE754二进制浮点数算术标准,这会使一些个别的小数运算产生“丢失精度”问题,在进行小数运算时,要调用数字的toFixed()方法
保留指定的小数位数
0.1 + 0.2 // 0.30000000000000004
- Math对象的使用:
- ceil:向上取整
Math.ceil(2.4) // 3 Math.ceil(-2.4) // -2 Math.ceil(2) // 2
- floor:向下取整
Math.floor(2.4) // 3 Math.floor(-2.4) // -2 Math.floor(2) // 2
- pow:幂计算
Math.pow(2, 3) // 8 Math.pow(3, 2) // 9
- sqrt:开根号
Math.sqrt(81) // 9 Math.sqrt(-81) // NaN
- random:0-1的随机小数
// 取a-b之间的随机整数: parseInt(Math.random() * (b - a + 1)) + a
- ceil:向上取整
3. 优先级:先乘除,后加减
二、关系表达式
1. 关系运算符
意义 | 运算符 |
---|---|
大于 | > |
小于 | < |
大于等于 | >= |
小于等于 | <= |
等于 | == |
不等于 | != |
全等于 | === |
不全等于 | !== |
2. 相关说明
- 大于>、小于<两个符号和数学相同
- 大于等于”运算符是>=,“小于等于”运算符是<=
- 如果想比较两个值是否相等,此时应该使用==运算符
- JavaScript =中等号 表示赋值,而并不是相等。判断相等应该使用==运算符
- 两个等号==运算符不比较值的类型,它会进行隐式转换后比较值是否相等
- 三个等号===运算符,不仅比较值是否相同,也比较类型是否相同
- !=表示不相等,!==表示不全等
5 != 6 // true 5 !== 6 // true 5 != '5' // false 5 !== '5' // true
- NaN不自等
NaN == NaN // false NaN === NaN // false
3. 如何判断某变量值为NaN
isNaN()函数可以用来判断变量值是否为NaN
isNaN(undefined) // true
isNaN('3天') // true
isNaN(null) // false
三、逻辑表达式
1. 逻辑运算符
意义 | 运算符 |
---|---|
非 | ! |
与 | && |
或 | || |
2. 相关说明
- !表示“非”,也可以称为“置反运算”
- !是一个“单目运算符”,只需要一个操作数
- 置反运算的结果一定是布尔值
!true // false !false // true !!true // true !0 // true !undefined // true !'' // true !'abc' // false !!0 // false !!'' // false !!'abc' // true
- &&表示“并且”,称为“与运算”,口诀:都真才真
true && true // true true && false // false false && true // false false && false // false
- ||表示“或者”,称为“或运算”,口诀:有真就真
true || true // true true || false // true false || true // true false || false // false
- 短路计算(a && b):a真,表达式值为b;a假,表达式值为a
3 && 6 // 6 undefined && 15 // undefined 15 && undefined // undefined null && 2 // null '' && 16 // '' NaN && undefined // NaN
- 短路计算(a && b):a真,表达式值为a;a假,表达式值为b
3 || 6 // 3 0 || 6 // 6 null || undefined // undefined 'a' || 'b' // 'a' NaN || null // null
3. 优先级:非 → 与 → 或
!true || true // true
3 && 4 || 5 && 6 // 4
四、赋值表达式
1. 赋值运算符
意义 | 运算符 |
---|---|
赋值 | = |
快捷赋值 | += -= *= /= %= |
自增运算 | ++ |
自减运算 | -- |
2. 相关说明
- 赋值运算也产生值,等号后面的值将作为“赋值运算的值”
var a; console.log(a = 4); // 4 var a, b, c; a = b = c = 15; console.log(a); // 15 console.log(b); // 15 console.log(c); // 15
- 快捷赋值运算符表示在原数值基础上进一步进行运算
var a = 3; a += 5; // 等价于a = a + 5 console.log(a); // 8 var b = 14; b /= 2; // 等价于b = b / 2 console.log(b); // 7
- ++和--是自增/自减运算符,表示在自身基础上加1或减1
var a = 3; a++; console.log(a);
- a++和++a的区别:a++先用再加;++a先加再用 ```javascript var a = 3; var b = a++; console.log(b); // 3 console.log(a); // 4
var a = 3; var b = ++a ; console.log(b); // 4 console.log(a); // 4
### 五、综合表达式
##### 1. 优先级:非运算 → 数学运算 → 关系运算 → 逻辑运算
```javascript
5 < 3 + 3 // true
3 > 2 && 8 > 3 + 4 // true
3 > 2 && 8 > 3 + 5 // false
!13 < 5 - 3 // true
!13 < 5 - 5 // false
2. 变量的范围表示
// 验证变量a是否介于5到12之间
a >= 5 && a <= 12
六. 练习:闰年判断1892 1896 1900 1904年(符合以下条件之一即可)
- 能被4整除且不能被100整除
- 能被100整除也能被400整除
// 要让用户先输入一个年份
var year = Number(prompt('请输入年份'));
// 根据两个条件进行判断(满足这两个条件中的一个,就是闰年):
// ① 能被4整除,且不能被100整除
// ② 能被100整除,且能被400整除
alert((year % 4 == 0 && year % 100 != 0) || (year % 100 == 0 && year % 400 == 0));