运算符的分类
1⃣️算术运算符
2⃣️逻辑运算符
3⃣️赋值运算符
4⃣️比较运算符
5⃣️三元运算符
算术运算符
算术运算符用于对数字执行算术运算
运算符 | 描述 |
---|---|
+ | 加法 |
- | 减法 |
* | 乘法 |
/ | 除法 |
& | 取余 |
++ | 递加 |
- - | 递减 |
加法(+)规律:
字符串类型与任何类型相加 符号“+”做链接作用
数字类型与数字类型、null(nulld在这里隐式转换为数字类型为0)相加 符号“+”做加法作用
数字类型 null 与Undefined相加 结果为NaN。
var num1 = 10;
var num2 = "5";
console.log(num1+num2); //结果为15,隐式类型转换
减法(-)规律:
所有类型减(除Undefined之外)的所有类型 符号“-”做减法作用
Undefined减(不包括字符串类型)的所有数据类型的都为NaN。
乘法(*)规律:
所有类型乘(除Undefined之外)的所有类型 符号“*”做乘法作用(null与所有类型相乘,结果为0)
Undefined乘所有数据类型的都为NaN。
除法(/)规律:
字符串类型 数字类型与 null 相除 结果为 Infinity
字符串类型、数字类型 null与 Undefined 相除 结果为 NaN
字符串类型 数字类型 null与 字符串类型、数字类型 null相除 符号“/” 做除法作用。
取余(%)规律:
Undefined 与所有数据类型的 取余 都为NaN
字符串类型、数字类型与null取余 结果为NaN
字符串类型与 字符串类型、数字类型取余 符号“%”做取余作用。
递增(++)与递减(- -)规律:
++或- -在前,则先进行运算,再将结果代入表达式;反之,若++或- -在后,则先将值代入表达式,然后再进行递增/递减操作。如:
var x = 20,
y = 30,
z = --x+y--;
console.log(x); // 19
console.log(y); // 29
console.log(z); // 49
赋值运算符
赋值运算符分为简单赋值和复合赋值,其中简单赋值为:=
而复合赋值包括:+=、-=、*=、/=、%=
var a = 10, b = 20;
a + = 5; //a=a+5
b % = 5; //b=b%5
var str = 'hello';
str + = 'world'; //str = str + 'world'
比较运算符
比较运算符的返回值为布尔值
运算符 | 描述 |
---|---|
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
== | 等于 |
!= | 不等于 |
=== | 严格相等 |
!== | 严格不相等 |
比较的特点:
1.对于两个拥有相同字符顺序,相同长度,并且每个字符的位置都匹配的字符串,应该使用严格比较运算符。
2. 对于两个数值相同的数字应该使用严格比较运算符,NaN和任何值不相等,包括其自身,正数零等于负数零。
3.对于两个同为true或同为false的布尔操作数,应使用严格比较运算符。
4.不要使用严格比较运算符或比较运算符来比较两个不相等的对象。
5.当比较一个表达式和一个对象时,仅当两个操作数引用相同的对象(指针指向相同对象)。
6.对于Null 和 Undefined 类型而言,应使用严格比较运算符比较其自身,使用比较运算符进行互相比较。
3 == '3'; //true
3 === '3'; //false
三元运算符
语法: 条件? 执行代码1: 执行代码2
说明:
1.可代替简单的if语句
2.条件成立,则执行代码1;条件不成立,则执行代码2
var score = 85;
var result = (score >= 60)? '及格':'不及格';
console.log(result); // '及格'
逻辑运算符
逻辑运算符用于测定变量或值之间的逻辑。
运算符 | 描述 |
---|---|
&& | 与(and) |
|| | 或(or) |
! | 非(not) |
与(&&): 所有条件都为true,才返回true
1.第一个操作数隐式类型转换后为true,则返回第二个操作数
2.第一个操作数隐式类型转换后为false,则返回第一个操作数
3.有一个操作数为null,则返回null
4.有一个操作数为NaN,则返回NaN
5.有一个操作数为undefined,则返回undefined
或(||): 有一个条件为true,就返回true
'hello' || 0; //hello
' '|| 88 ||true; //88
' '|| 0 || 'abc'; //abc
' '|| 0 || null; //null
' '|| 0 || null || 99; //99
非(!): 返回值一定为布尔值
!null ; //true
!!88 ; //true