JavaScript运算符和表达式
1.算术运算符
运算符 | 运算规则 | 范例 | 结果 |
---|---|---|---|
+ | 加法 | 2+3 | 5 |
+ | 连接字符串 | ‘中’+‘国’ | ‘中国’ |
- | 减法 | 2-3 | -1 |
* | 乘法 | 2*3 | 6 |
/ | 除法 | 5/2 | 2.5 |
% | 取余数 | 5%2 | 1 |
** | 幂(es7) | 2**3 | 8 |
JS里面的算数运算规则:
- 任意数据类型和字符串进行加法运算,都是字符串的拼接
- 任意数据类型和NaN进行四则运算,结果都是NaN
- 当true和false参与运算,true转换为1,false转换为0
- 除+运算外,数值类型字符串参与运算,都转换为数值;但是非数值类型字符参与运算,结果都是NaN
- 除+运算外,空字符串转换为0,null转换为0
- 0可以作为除数,得到结果都是无穷大
- 0参与取余运算,得到结果都是NaN
2.一元运算符
递增运算符:
- 前置递增运算符
- ++num 前置递增,就是自加1,类似于 num = num + 1,但是 ++num 写起来更简单。
- num++ 后置递增,就是自加1,类似于 num = num + 1,但是 num++ 写起来更简单。
- 使用口诀:++在前,整体是一个新值,++在后,整体是一人旧值
例:
前置++
var n1 = 2;
++ n1;//n1 = 3
var n2 = 4; //n1 = 3 + ++n2=1+4=5
console.log(n1 + ++n2);//8
后置++
var n1 = 2;
n1++;//n1 = 3
var n2 = 4; //n1 = 3 + n2 = 4
console.log(n1 + n2++);//6
思考:
var a = 1; var b = ++a + ++a; console.log(b);//5
var a = 1; var b = a++ + ++a; console.log(b);//4
var a = 1; var b = a++ + a++; console.log(b);//3
var a = 1; var b = ++a + a++; console.log(b);//4
🚨前置和后置的区别:
在没有赋值操作,前置和后置是一样的。但在赋值操作时,如果递增或递减运算符前置,那么前置 的运算符会先累加或累减再赋值,如果是后置运算符则先赋值再累加或累减。运算的时候也是一样;
3.赋值运算符
定义:用来把数据赋值给变量的运算符
=也是一个运算符,被称为赋值(assignments)运算符。
运算符 | 运算规则 | 范例 | 结果 |
---|---|---|---|
= | 赋值 | a=5 | 5 |
+= | 加后赋值 | a=5,a+=2 | 7 |
-= | 减后赋值 | a=5,a-=2 | 3 |
*= | 乘后赋值 | a=5,a*=2 | 10 |
/= | 除后赋值 | a=5,a/=2 | 2.5 |
%= | 取模(余数)后赋值 | a=5,a%=2 | 1 |
**= | 幂后赋值 | a=5,a**=2 | 25 |
4.关系运算符(比较运算符)
运算符 | 运算规则 | 范例 | 结果 |
---|---|---|---|
== | 相等 | 4==3 | false |
!= | 不等于 | 4!=3 | true |
> | 小于 | 4>3 | true |
< | 大于 | 4<3 | false |
>= | 小于等于 | 4<=3 | false |
<= | 大于等于 | 4>=3 | true |
比较原则:
1.数值字符串和数值,字符串会自动转为数值比较
2.两个字符串,比较首个数字大小
3.布尔值的false和true会转换成0和1
4.两个数值,则数值比较
5.两个都是字符串,则比较两个字符串对应的字符编码值。(字符转ascii码:用charCodeAt();)
在相等和不等的比较上,如果操作数是非数值,则遵循以下规则:
1.一个布尔值,比较之前将其转换为数值,false转0,true转1
2.一个字符串,比较前将其转换为数值在比较
3.不需要转换下,null和undefined相等
4.如果是NaN,则==返回false,!=返回true;并且NaN和自身不相等
5.全等和不全等,比如值和类型都相等,返回true,否则返回falsee
5.逻辑运算符
逻辑运算符通常用于布尔值的操作,一般和关系运算符配合使用,有三个逻辑运算符:
逻辑与(AND)、逻辑或(OR)、逻辑非(NOT)。
运算符 | 运算规则 | 范例 | 结果 |
---|---|---|---|
&& | 与:同时为真 | false&&true | false |
|| | 或:一个为真 | false or true | true |
! | 非:取反 | !false | true |
6.三目运算符
三目运算符,又叫三元条件运算符
语法如下:条件表达式?语句1:语句2
参数说明:
- 条件表达式,结果会被作为布尔值处理
- 语句1:如果条件表达式返回true则执行
- 语句2:如果条件表达式返回false则执行
var num = 6 > 4? '对' : '错';
//对返回true,则把‘对’赋值给box,反之,把错给box
// 判断一个年龄是否成年, 当年龄超过18 返回 成年 否则返回未成年
var age = 19;
// console.log( age >= 18 ? '成年' : '未成年' );
7.运算符优先级
运算符优先级描述了在计算表达式时执行运算 的顺序。先执行具有较高优先级的运算,然后执行较低优 先级的运算。例如,先执行相乘,再执行相加。 运算符比较多,可以合理使用()来改变表达式的优先级。 ()的用法和数学中的()用法相同,()内的会优先计算。