一:算术运算符
+ - * / % ++ --
(加减乘)+ - * 我就不太多描述了,这里的除(/)我重点说一下和java的区别:
javascript:(基本数据类型:number string null undefined boolean)
1.当被除数和除数都为实数,除数不为0的时候,取精确值。(因为在javascript就只有number类型,不管是整数还是浮点数)
2.当被除数和除数都为实数,除数为0的时候,结果为infinity。(因为在javascript就只有number类型,不管是整数还是浮点数)
java(基本数据类型:四类八种====》byte short int long float double boolean char)
1.当被除数和除数都为整数,除数不为0的时候,取整。(4/3=1)
2.当被除数和除数都为整数,除数为0的时候,编译可以通过,但是结果会抛出异常(java.lang.ArithmeticException)
3.当被除数和除数有一个或者两个都是浮点数,除数不为0,取精确值。
4.当被除数和除数有一个或者两个都是浮点数,除数为0,结果为infinity
求余:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="Generator" content="EditPlus®">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
<title>javascript求余</title>
</head>
<body>
<script type="text/javascript">
var a=2.5;
document.write(a%2+"<br/>");
document.write(a%0+"<br/>");
var b=7;
document.write(b%5+"<br/>");
document.write(b%0+"<br/>");
</script>
</body>
</html>
0.5
NaN
2
NaN
由这个例子我们可以看出:
当被除数和除数都为实数,并且除数为0的时候,结果是NaN(Not a number)不是一个数
++:是指一个变量自增一
++分为前++和后++:
前++:先自增一,再参与运算。
后++:先参与运算,再自增一。
例子:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="Generator" content="EditPlus®">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
<title>加加的运算</title>
</head>
<body>
<script type="text/javascript">
//前++:
var a=2;
var sum=++a*2+1;//先自增一,再参与运算。
document.write(sum+":"+a+"<br/>");
//后++
var b=-3;
var sum2=b++*2+1;//先参与运算,再自增一
document.write(sum2+":"+b+"<br/>");
</script>
</body>
</html>
7:3
-5:-2
--:是值一个变量自减一,用法和++一样
二:关系运算符(比较运算符)
<,>,<=,>=,!=,==,===
这里重点说一下==和===的区别:
相同点: 都是用来做判断的。
不同点:
== : 不带有类型进行比较。
===:带有类型进行比较。
例子:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="Generator" content="EditPlus®">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
<title>等于的区别</title>
</head>
<body>
<script type="text/javascript">
var a=4;
var b="4";
if(a==b){//值是否相等
document.write("yes(==)"+"<br/>");
}else{
document.write("no(==)"+"<br/>");
}
if(a===b){//值和类型是否相等
document.write("yes(===)"+"<br/>");
}else{
document.write("no(===)"+"<br/>");
}
</script>
</body>
</html>
yes(==)
no(===)
三:逻辑运算符
&&(逻辑与) :运算结果:
true && true true
true && false false
false && true false
false && false false
结论: 当左右两边的操作数只有一个是false时,结果就为false。
逻辑与采用短路法运算,当第一个操作数的值为false时,右边的表达式不在参与运算 。
true || true true
true || false true
false || true true
false || false false
结论: 当左右两边的操作数只要有一个是true时,结果就为true。
逻辑或也采用短路法运算,当第一个操作数的值为true时,右边的表达式不在参与运算 。
上面的操作数都是boolean类型,也可以是其他类型:
var a=2; var b=3;var andflag= a && b;
var orflag=a || b;
andflag等于3
orflag等于2
理由:在运算过程中,首先js会将&&和||两边的值转换成boolean类型,然后再算值,&&运算如果放回true,则取后面的值,如果||返回true,则取前面的值,而其中数值转换成boolean的规则是:对象,非零整数,非空字符串返回true,其他flase.
如 var a = “” || null || 3 || 4 —-> var a = fasel || false || true || true 结果为true 则返回第一个true,即是3var b = 4 && 5 && null && 0 ——> var b = true && true && false && false 结果是false 则返回第一个false 即是null .
这里需要和java区分:java的逻辑与和逻辑或的操作数只能是boolean类型
四:条件运算符(三目运算符)
表达式?value1:value2;
表达式的返回值是一个boolean类型,如果放回true则取value1,反之取value2。
不知道大家有没有觉得三目运算符和咱们所学的if...else语句很像呢?咱们一起看一下他们的区别吧
他们的区别主要是if...else语句的结果没有返回值,而三目运算符一定有一个返回值。
五:赋值运算符
=(赋值) +=(相当于a=a+b) -=(相当于a=a-b) *= (相当于a=a*b) /=(相当于a=a/b) %=(相当于a=a%b)