JavaScript 运算符
算数运算符 | 描述 | y赋值 | 表达式运算 | x 结果 |
+ | 加法 | y=1 | x=y+2 | 3 |
- | 减法 | y=2 | x=y-2 | 0 |
* | 乘法 | y=3 | x=y*2 | 6 |
/ | 除法 | y=4 | x=y/2 | 2 |
% | 取模(余数) | y=5 | x=y%2 | 1 |
++ | 自增 | y=6 | x=++y | 7 |
y=7 | x=y++ | 7 | ||
-- | 自减 | y=8 | x=--y | 7 |
y=9 | x=y-- | 9 |
赋值运算符 | 描述 | x赋值 | 表达式运算 | 等同于 | x 结果 |
= | 等于 | x=1 | x=y | (y默认值为0) | x=1 |
+= | 加等于 | x=2 | x+=y | x=x+y | x=2 |
-= | 减等于 | x=3 | x-=y | x=x-y | x=3 |
*= | 乘等于 | x=4 | x*=y | x=x*y | x=0 |
/= | 除等于 | x=5 | x/=y | x=x/y | x=Infinity |
%= | 取余等于 | x=6 | x%=y | x=x%y | x=NaN |
比较运算符 | 描述 | x赋值 | 比较 | 返回值 |
== | 等于 | x=5 | x==8 | false |
x==5 | true | |||
=== | 绝对等于(值和类型均相等) | x==="5" | false | |
x===5 | true | |||
!= | 不等于 | x!=8 | true | |
!== | 不绝对等于(值和类型有一个不相等,或两个都不相等) | x!=="5" | true | |
x!==5 | false | |||
> | 大于 | x>8 | false | |
小于 | x | true | ||
>= | 大于或等于 | x>=8 | false | |
小于或等于 | x | true |
逻辑运算符 | 描述 | 例子 |
&& | and(与) | (x < 10 && y > 1) 为 true |
|| | or(或) | (x==5 || y==5) 为 false |
! | not(非) | !(x==y) 为 true |
JavaScript 运算符
- 运算符也被称为操作符,是用于实现赋值、比较和执行算数运算等功能的符号。
- 表达式是由数字、运算符、变量等组成的式子,表达式最终都会有一个返回值返回给我们。
算数运算符
- 用于执行两个变量或值的算术运算。
- 浮点数精度:进行算术计算时其精确度远远不如整数,所以,不要直接判断两个浮点数是否相等!
代码示例:
<script> //“+”作用:数学运算、字符串链接。任何数据类型加字符串都等于字符串。 var a = "a" + true + 1; console.log(a); //打印出来是 atrue1 var a = 1 + "a" + 1 + 1; console.log(a); //打印出来是 1a11 var a = 1 + 1 + "a" + 1 + 1; console.log(a); //打印出来是 2a11(从左向右运算) var a = 1 + 1 + "a" + (1 + 2); console.log(a); //打印出来是 2a3 var a = 0 - 1; console.log(a); //打印出来是 -1 var a = 2 * 1; console.log(a); //打印出来是 2 var a = 0 / 0; console.log(a); //打印出来是 NaN //应该得出一个数字类型的数,但是没法表达,就用 NaN (NaN 是 Not a Number 非数,不是数,但是是数字类型。 var a = 1 / 0; console.log(a); //打印出来是 infinity var a = -1 / 0; console.log(a); //打印出来是 -infinity var a = 5 % 2; console.log(a); //打印出来是 1 //5%2 是五除二的余数,商二余一 var a = 5 % 1; console.log(a); //打印出来是 0 //是五除一的余数,结果是 0 var num = 1 % 5; console.log(a); //打印出来是 1 //意思是 1 除以 5 的余数。商 0 余 1 var a = 4 % 6; console.log(a); //打印出来是4 //是四除六的余数,结果是 4 var a = 10; a %= 2; console.log(a); //打印出来是 0 var a = 4; a %= 5; console.log(a); //打印出来是 4 var a = 0; a %= 5; console.log(a); //打印出来是 0 </script>
运行结果:
递增和递减算数运算符
代码示例:
<script> var a = 2; var b; b = a++; console.log(a, b);//打印出来是 3 2 var a = 2; var b; b = a--; console.log(a, b);//打印出来是 1 2 var a = 2; var b; b = ++a; console.log(a, b);//打印出来是 3 3 var a = 2; var b; b = --a; console.log(a, b);//打印出来是 1 1 var a = 12; var b; b =a++ + ++a + a-- + --a - a++ - ++a - a-- - --a; //a= 12(初始值) 13(运算后的值) 14(b赋值给a) 13(运算后的值) 12(b赋值给a) 13(运算后的值) 14(b赋值给a) 13(运算后的值) 12(b赋值给a) //b= 12(a赋值给b) + 14(运算后的值)+ 14(a赋值给b)+ 12(运算后的值)- 12(a赋值给b)- 14(运算后的值)- 14(a赋值给b)- 12(运算后的值) console.log(a, b);//打印出来是 12 0 </script>
运行结果:
代码示例:
<script> var a = 10; a = a + 1; document.write(a+'<br>'); //页面显示: 11 //var a = 1; //a = a + 1;写成 a ++是一种简化形式“++”,是自身加一,再赋值给自身 //a++是 a=a+1 的简化形式 var a = 10; document.write(++a+','); document.write(a+'<br>'); //页面显示: 11;11 //是先执行++,再执行本条语句 document.write(++a) var a = 1; document.write(a+++','); document.write(a+'<br>'); //页面显示: 1;2 //是先执行语句(document.write(a)),再++,所以第一次打印的还是 a,第二次打印 a++后的值 var a = 10;var b = ++a - 1 + a++;document.write(b+',',a+'<br>') //页面显示: 21 12 //先++a,这个时候 a=11,再-1,再加 a,b 就是 21,最后++,a 就是 12赋值的顺序自右向左,计算的顺序自左向右(按数学来) var a = 1; var b = a++ + 1; document.write(b+'<br>'); //页面显示: 2,先执行 var b =a+1, 再 a++ var a = 1; var b = a++ + 1; document.write(a+','); document.write(b+'<br>'); //页面显示: 2,2 var a = 1; var b = ++a + 1; document.write(a+','); document.write(b+'<br>'); //页面显示: 2,3 var i = 1; var a = i++; document.write(i+'<br>');//页面显示: a = 1; 此时 i 先将值 1 赋给 a,然后自己+1,i=2; var b = ++i;document.write(b+',');document.write(i+'<br>');//页面显示: b = 3;此时 i 先自己+1 为 3.再给 b 赋值,b=3; </script>
运行结果:
赋值运算符
赋值运算符用于给 JavaScript 变量赋值。
代码示例:
<script> var a = 10; a += 10 + 1; console.log(a); //打印出来是 21 //var a =10;a ++;a ++;a ++;加十个 //简化写法:a +=10;也是 a = a+10; var a = 10; a /= 2; console.log(a); //打印出来是 5,是除二赋给自身的意思 var a = 10; a *= 2; console.log(a); //打印出来是 20,是乘二赋给自身的意思 var a = 10; a %= 2; console.log(a); //打印出来是 0, 10 能整除 2,余数是 0,取余,余数赋给自身。 var a = 3; a %= 4; console.log(a); //打印出来是 3,3 除以 4,余数为 3,余数赋给自身。 var a = 0; a %= 4; console.log(a); //打印出来是 0,0 除以 4,余数为 0,余数赋给自身。 var a = 1; a %= 10; console.log(a); //打印出来是 1,1 除以 10,余数为 1,余数赋给自身。 </script>
运行结果:
比较运算符
- 比较运算符在逻辑语句中使用,以测定变量或值是否相等。
- 注:“>”,”=”,“
- 但凡是运算符,都是要有运算的。
- 用到布尔值,true 或 false。
- 字符串的比较,比的是 ASCII 码(七位二进制 0000000)。
代码示例:
<script> var a = "a" > "b"; console.log(a); //打印出来是 false var a = 1 > 2; console.log(a); //打印出来是 false var a = 1 < 2; console.log(a); //打印出来是 true var a = "1" > "8"; console.log(a); //打印出来是 false var a = "10" > "8"; console.log(a); //打印出来是 false,不是10和8比,是字符串一零和八比,先用开头的一和八比,比不过就不看第二位了;一样的就拿零和八比 var a = 1 == 2; console.log(a); //打印出来是 1 等不等于 2,因为 1 肯定不等于 2,所以值false console.log((a = undefined == undefined)); //打印出来是 true console.log((a = NaN == NaN)); //打印出来是 false。NaN 不等于任何东西,包括他自己非数。 //NaN 得不出数,又是数字类型,就是 NaN //>= , <= , !=(是否不等于,非等) //比较结果为 boolean 值:true 和 false console.log((a = infinity == infinity)); //报错。 </script>
运行结果:
逻辑运算符
- “&&”,“||”,“!“运算结果为真实的值。
- &&运算符
- 如果&&运算符是两个表达式:先看第一个表达式转换成布尔值的结果是否为真,如果结果为真,那么它会看第二个表达式转换为布尔值的结果,然后如果只有两个表达式的话,只看到第二个表达式,就可以返回该表达式的值了,如果第一位布尔值为false,不看后面的,返回第一个表达式的值就可以了。
- 如果&&运算符是三个或多个表达式,会先看第一个表达式是否为真,如果为真,就看第二个表达式,如果第二个也为真,就看第三个表达式(如果为真就往后看,一旦遇到假就返回到假的值),如果第三个是最后一个表达式,那就直接返回第三个的结果如果第一个是假,就返回第一个值,当是真的时候就往后走,一旦遇到假,就返回。
- &&与运算符是有中断作用的,当短路语句使用(如果。。那么。。)
代码示例:
<script> var a = 1 && 2; console.log(a); //打印出来是 2,如果第一位 1 为真,结果就为第二位的值 2 var a = 1 && 2 + 2; console.log(a); //打印出来是 4,如果 1 为真,结果就为 4 var a = 0 && 2 + 2; console.log(a); //打印出来是 0 var a = 1 && 1 && 8; console.log(a); //打印出来是 8,先看第一个是否为真,为真再看第二个,中途如果遇到 false,那就返回 false 的值 var a = 1 + 1 && 1 - 1; console.log(a); //打印出来是 0 </script>
运行结果:
- || 运算符
- 看第一个表达式是否为真,如果为真,则返回第一个值,碰到真就返回,如果第一个表达式是假,就看第二个表达式,如果第二个是最后一个,就返回第二个的值。
- 关注真假的说法:全假才为假,有一个真就为真。
代码示例:
<script> var num = 1 || 3; console.log(num); //打印出来是 1 var num = 0 || 3; console.log(num); //打印出来是 3 var num = 0 || false; console.log(num); //打印出来是 false </script>
运行结果:
- !非运算符,否的意思。
- 先转成布尔值,再取反。
- != (非等于)是表达他们到底等不等的。
- 转换为布尔值会被认为false的值有 undefined、null、false、""、NaN、0。
代码示例:
<script> console.log(a = ! 123);//打印出来是 false。123 的布尔值是 true,取反是 false console.log(a = ! ''); //打印出来是 true。空串””布尔值是 false,取反是 true console.log(a = ! !''); //打印出来是 false,取反后,再反过来,结果不变。 var a = true; console.log(a =!a); //打印出来是 false,自身取反,再赋值给自身。 </script>
运行结果: