JavaScript中的操作符用于表达式的操作。JavaScript提供了很多操作符供我们选择,有些操作符是我们在开发中是经常使用的,有些可能很少使用。但是,这些操作符我们都需要有所了解,因为即使自己不用,当你看到旧项目中的一些罕见的操作符时,还是要理解这个操作符的意义。下面就来看看JavaScript为我们提供了哪些操作符。
(一)运算符
- 运算符也称为操作符
- 通过运算符可以对一个或多个值进行运算或操作
(二) 算术运算符
+ 加法运算(对2个非字符串);拼串(只要有一个是字符串)
- 减法运算
* 乘法运算
/ 除法运算
% 取余运算
** 幂运算
- 对非Number类型的值做算术运算(- 、 *、 / 、%、**、加)时,都会先转换为Number,然后再做算术运算。
- 任何值和NaN做算术运算都得NaN
(三)自增和自减
- 自增++
- 使变量+1
- 有:前++(如:++a)、后++(如:a++)
- 前自增:先自增,再进行其他操作。
- 后自增:先进行其他操作,再自增。
- 自减--
- 使变量-1
- 有:前--(如:--a)、后--(如:a--)
- 前自减:先自减,再进行其他操作。
- 后自减:先进行其他操作,再自减。
可以看到,两种类型的结果是不一样的,原因就在于后置递增递减操作是在包含它们的语句被求值之后才执行的。
这四个操作符可以作用于任何类型的数据。对于这些类型,JavaScript会将他们转化为数值,再在这个数值上进行加一或减一操作。如果不能转化为一个数字,那么递增或递减的结果就是NaN:
(四)比较(关系)运算符
1、 比较(关系)运算符有: > 、 >= 、 < 、<=、 ==、 ===、 !=、 !==
如果关系成立则返回true,关系不成立则返回false
2、比较两个数字之间的大小,结果为布尔值
3、比较两个字符串时,比较的是字符串的Unicode编码的大小。比较字符编码时是一位一位进行比较的。
例:"abc" < "bcd" // true。一位一位进行比较的
注意:比较两个字符串型的数字时,一定要转型
console.log("1111" < "5"); //true
4、比较的不是两个字符串,也不是两个数字时,会将非数字转换为数字然后再比较。
相等==
- 如果两个值 相等返回true,不等返回false。
- 会做自动的类型转换:对不同的类型进行比较,会将其转换为相同的类型然后再比较,转换后相等,它也会返回true。
不等!=
- 如果两个值不等则返回true,相等则返回false
- 不等也会做自动的类型转换。
全等===
-如果两个值和类型 相等返回true
-不会进行自动的类型转换,如果两个值类型不同,则直接返回false
不全等!==
- 如果两个值或类型不 相等返回true
-不会进行自动的类型转换,如果两个值类型不同,直接返回true
(五)逻辑运算符
- 逻辑运算符用来对布尔值运算,结果为布尔值
- ! 非:对一个布尔值进行取反,true变false ,false变true
- && 与(并且):只有两个值都为true时,才会返回true。只要有一个false,就会返回false。
- || 或:只有两端都是false时,才会返回false。只要有一个true,就会返回true。
(六)赋值运算符
= :将右侧的值赋值给左侧变量
+=:如 a += 5 相当于 a = a+5
-=:如 a -= 5 相当于 a = a-5
*=:如 a *= 5 相当于 a = a*5
/=:如 a /= 5 相当于 a = a/5
%=:如 a %= 5 相当于 a = a%5
**=:如 a**=2 相当于 a =a**2
(七)三元运算符?:
- 语法:条件表达式?语句1:语句2;
- 执行流程: 先对条件表达式求值, 如果求值结果为true,则执行语句1,并返回执行结果; 如果求值结果为false,则执行语句2,并返回执行结果
(八)运算符优先级
- 优先级越高的运算符越优先计算,优先级相同的,从左往右计算。
- 优先级如果遇到拿不准的,使用( )来改变优先级。
- 运算符优先级(由高到低):
( )→!(非)→算术(乘方→乘除求余→加减)→比较(< =< > >= →等于不等于)→逻辑(与→或)→三元→赋值
(九)表达式
表达式:各种类型的数据、变量和运算符的集合。最简单的表达式是一个变量或字面量。
表达式有一个返回值。