目录
算数运算符
一元运算符
自增自减
逻辑运算符
赋值运算符
关系运算符
条件运算符
逗号运算符
运算符优先级
运算符也叫操作符,通过运算符可以对一个或者多个值进行运算,并获取运算结果。
例:typeof就是运算符,可以来获得一个值的类型,它会将该值的类型以字符串的形式返回。
当对非number类型的值进行运算时,会将这些值转换为number然后再运算。
任何值和NaN做运算逗得NaN
如果两个字符串进行加法运算,则会拼串,会将两个字符串拼接为一个并返回。
任何值和字符串相加都会转换为字符串,并做拼串操作,我们可以利用这一点,来讲一个任意的数据类型转换为String类型。这是一种隐式的类型转换,由浏览器自动完成,实际上它也是调用String()函数。
任何值做- * / 运算时都会自动转换为Number,可以利用这一特点做隐式的类型转换。可以通过为一个值-0 *1 /1来将其转换为Number。原理和Number()函数一样,使用起来更加简单。
一元运算符只需要一个操作数。
自增可以使得变量在自身的基础上加1,a++ <=> a=a+1,++a <=> a=a+1,自带赋值,前后++与C语言相同
自减可以使得变量在自身的基础上减1,a-- <=> a=a-1,–a <=> a=a-1,自带赋值,前后–与C语言相同
a++的值等于原变量的值(自增前的值) ++a的值等于新值(自增后的值)
唯一的区别是后++是先给值然后马上自增。例如
var b=10;
console.log(b++ + ++b + b);
结果是
10+12+12=34
并且注意
var b=10;
b=b++;
console.log(b);
等价于
var b=10;
var c=b++;
b=c;
console.log(b);
同样的--同理
三个:非!,与&&,或||
!:对bool进行运算就是取反,对非bool会先转化为bool。如果对一个值进行两次取反,它不会变化。 我们可以利用该特点,来将一种其他的数据类型将其转化为bool,方法是!!tmp,原理和Boolean()函数一样。
var a=false;
console.log(!a);
console.log(!!a);
var b=10;
console.log(!b);
console.log(!!b);
true
false
false
true
&& 与 –&可以对符号两侧的值进行与运算并返回结果 –运算规则: —两个值中只要有一个值为false就返回false 只有两个值都为ture时,才会返回ture —JS中的“与”属于短路的与 如果第一个值为false,则不会看第二个值
|| 或 –运算规则: —JS中的“或”属于短路的或 如果第一个值为false,则会检查第二个值
与运算:
如果两个值都是true,则返回后边的 – result = 5&&6; 输出6
如果两个值中有false,则返回靠前的false – result = 0&&6; 输出0 规则小结: 如果第一个值是ture, 则返回第二个值 如果第一个值是false,则返回第一个值
或运算: 如果第一个值是ture, 则返回第一个值 如果第一个值是false,则返回第二个值
返回值就是在加入短路原则之后最后判断的那个元素
+=,-=,*=,/=,%=与C完全相同
赋值运算符 =
- 可以将符号右侧的值赋值给左侧变量
+=
- a += 5 相当于 a = a+5
- var str = "hello"; str += "world";
-=
- a -= 5 相当于 a = a-5
*=
- a *= 5 相当于 a = a*5
/=
- a /= 5 相当于 a = a/5
%=
- a %= 5 相当于 a = a%5
关系成立返回true,关系不成立返回false >,>=,<,<=,==,!=
除了==与!=符号:
非数值的情况: 转化为Number, 任何值与NaN比较都是false
对于==与!=符号: 类型不同会自动进行类型转化,但是左边转右边还是右边转左边都不一定,注意的是undefinednull,任何值NaN都为false, 包括NaN。
双等号==:
如果两个值类型相同,再进行三个等号(===)的比较
如果两个值类型不同,也有可能相等,需根据以下规则进行类型转换在比较:
如果一个是null,一个是undefined,那么相等
如果一个是字符串,一个是数值,把字符串转换成数值之后再进行比较
三等号===:
如果类型不同,就一定不相等
如果两个都是数值,并且是同一个值,那么相等;如果其中至少一个是NaN,那么不相等。(判断一个值是否是NaN,只能使用isNaN( ) 来判断)
如果两个都是字符串,每个位置的字符都一样,那么相等,否则不相等。
如果两个值都是true,或是false,那么相等
如果两个值都引用同一个对象或是函数,那么相等,否则不相等
如果两个值都是null,或是undefined,那么相等
JavaScript 还包含了基于某些条件对变量进行赋值的条件运算符。
语法:variablename=(condition)?value1:value2;
举例:result=(age<18)?"年龄太小":"年龄合适";
执行流程:如果condition为true,则执行语句1,并返回执行结果,如果为false,则执行语句2,并返回执行结果。
条件运算符也叫三元运算符
语法:
条件表达式?语句1:语句2 ;
-执行流程:
条件运算符在执行时,首先对条件表达式进行求值,
如果该值为true,则执行语句1,并返回执行结果。
如果该值为false,则执行语句2,并返回执行结果。
如果条件的表达式的求职结果是一个非布尔值,
会将其转换为布尔值然后在运算。
使用逗号可以在一条语句中执行多次操作。
比如:var num1=1, num2=2, num3=3;
使用逗号运算符分隔的语句会从左到右顺 序依次执行。