1.运算符可以对一个或多个值进行运算,并获取运算结果,一般不会队员变量产生影响。typeof是一种运算符,可以以字符串的形式返回目标的类型。
注意:运算符均会返回结果。
2.算术运算符(二元运算符):基本的加(+)减(-)乘(*)除(/) 取余(%)。例如:result = 1+2;
非Number类型的值进行运算时,将其转换为数字进行运算,例如 a = true + false;则 a = 0.
两个字符串相加,则会对字符串进行拼接处理,a = "123"+"456";a 的结果为"123456".
任何类型的值和字符串进行加法运算时,都会转换为字符串进行拼接,但是利用进行其他运算的时候,字符串类型的“1”会被转换为Number进行运算,即 a =100 - "1",a的结果为99。
3.一元操作符,只需要一个操作数(+ 、-)。
Number类型的运算:a=+a(+正号不对数字产生影响),负号同数学端的运算。、
Boolean的值true和false先转换为Number再进行运算,字符串也会将其转换为Number之后再进行运算。
4.自增(++)和自减(--)运算符:表达式a++的值不同与表达式++a的值,但是起到的效果是相同的,都完成了a的自增。
var a=20;
result = a++ + ++a +a;
console.log(result);
最终的结果为 :20 + 22 + 22 =64,执行的逻辑为:先看到a++,执行的操作为完成完成运算后a+1,但是调用a++时,a来不及变,取出的值为20;再看到++a,此时的a++已经执行完,a的值变为21,调用++a时,a的值先增加1,++a取出的值为21+1=22;最后再加上自增两次的a(22)之后赋值给result。
var d=20;
d=d++;
同理,可以得到此时d的值仍然为20.
5.逻辑运算符:!(非) &&(与) ||(或)。
!:对非Boolean值进行运算,先将数据类型转换为Boolean再进行取反操作;
&&:对符号两侧的值进行与运算,与真值表的列举方法相同;||:同C的逻辑。
注意:Js中的与操作,第一个值为false时,将不看第二个值;或操作时,第一个值为true,将不看第二个值,无论第二个值是什么类型。
非布尔值进行与或运算时,先将相应的值转为布尔值再进行运算,并返回原值。
与运算(&&):两者均为真,返回后边的true;两者均为false返回前面的false。
var result = 1 && 2; //返回结果为2
Var result = 2 && 1; //返回结果为1
6.赋值运算符:
= 将符号右侧的值赋值给左侧;
+= 符号右侧的值和左侧的值相加赋值给左侧;
-=、*=、/= 、%=等赋值运算符逻辑都相同。
7.关系运算符:通过运算比较两个值之间的大小关系。
数值关系运算符逻辑同数学一样,对于非数字情况:将其转化为数字在进行比较。
特殊情况:符号两侧的值都是字符串,不会将其转为数字进行比较,而是分别比较字符的Unicode编码,字符的编码为一位一位进行比较,两位一样时再比较下一位。
var a= “bbc”> "b";//true
8.相等运算符,使用 == 做相等运算:判断两个值是否相等,不判断数据类型,具体转换为什么数据类型进行比较,不确定;
undefined衍生自null,即undefined == null 返回true;NaN与任何值都不相等,包括它本身;
不相等 !=;
===用来判断两个值是否全等,不做自动的数据类型转化,当数据类型不同时,返回值直接为false;
!==不全等。
9.条件运算符(?:)的使用方式,条件表达式?语句1:语句2.
10.运算符的优先级:
①使用,可以分割多个语句。
②优先级相同,从左往右计算;JS有优先级表格,遇到模糊不清的情况可以查表进行运算 ,自己写代码时最后利用()进行分割。