谢谢大家浏览,希望大家能给我多提提意见,有不对的地方大家畅所欲言,一定及时改正
四、运算符
运算符(operator)也被称为——是用于实现赋值、比较和执行算数运算等功能的符号。
JavaScript中常用的运算符有:
-
算数运算符
-
递增和递减运算符
-
比较运算符
-
逻辑运算符
-
赋值运算符
(一)、算术运算符
1.二元运算符
加+ 减- 乘* 除/ 取余%
let a=10;
let b=20;
let c=a+b;
console.log("c="+c);
console.log(a-b,a*b,a/b);//-10 200 0.5
console.log(a%b);//10
console.log(9%3,15%20,100%200,9%2);//0 15 100 1
2.+ 正号 - 负号
3.一元运算符
++ --(自增 自减)
如果不参与别的运算 前增和后置是一样的
如果参与别的运算:
前置 先自增 ,再赋值
后置 先赋值,再自增
// ------ 不参与运算
let i = 1;
let j = 2;
i++; // i=i+1
j--; //j=j-1
console.log("i=" + i); //2
console.log("j=" + j); //1
// ------ 参与运算
let a = 2;
let b = a++; // 后置
/*
b=2
a=3
*/
console.log("a=" + a, "b=" + b); //a=3 b=2
let c = ++b; //前置
/*
c=3;
b=3;
*/
console.log("c=" + c, "b=" + b); //c=3 b=3
例题1
<script>
var a = 7;
var b = 9;
var c = 13;
a = b++ + --c + ++a + --b + a++ + b-- - ++c;
/*
在式子中的值 9 12 8 9 8 9 12
b c a b a b b
此时的值 10 11 9 9 10 8 12
*/
//a=42,b=8,c=13
b = a++ + --b;
/*
在式子中的值 42 7
a b
此时的值 43 6
*/
//a=43,b=49,c=13
document.write(a + "<br>");
document.write(b + "<br>");
document.write(c);
</script>
(二)、赋值运算符
= += -= *= /= %=
优先级较低
let a = 10,
b = 10,
c = 10,
d = 10,
e = 10,
f = 10;
b += 10; // a=a+10
c -= 10; // a=a-10
d *= 10; //a= a*10
e /= 10; // a=a/10;
f %= 10; // a=a%10;
console.log(a);//10
console.log(b);//20
console.log(c);//0
console.log(d);//100
console.log(e);//1
console.log(f);//0
(三)、比较运算符
> >= < <= == != === !==
比较和逻辑运算符用于测试 true 或者 false。
== 和===有什么区别
== 比较时会转换数据类型 只要数值一样即可
=== 不会转换数据类型 值和类型完全一致
let a = 10;
let b = 20;
let c = a >= b;
console.log(c); //false
console.log(5 >= 5); //true
console.log(a <= b); //true
console.log("5" == 5); //true
console.log("5" === 5); //false
console.log("5" != 5); //false
console.log("5" !== 5); //true
特例:当两边都是字符串时 (比较的ascii码 一位一位比)
(四)、逻辑运算符
逻辑运算符用于测定变量或值之间的逻辑。
&& 逻辑与 || 逻辑或 ! 逻辑非
短路逻辑:在计算逻辑表达式时,如果已经可以确定整个表达式的结果,则不会再继续计算剩余的部分。
&& 逻辑与
let a = 10;
let b = 20;
let c = a >= b && a < b;
console.log(c); // false
在全是比较的式子中,一假为假,全真为真
特例
console.log(8 > 5 && false); //false
console.log(8 > 5 && "hello"); //"hello"
console.log(8 && 6); //6
console.log(NaN && "hell" + 1 + null); //NaN
console.log(8 > 6 && undefined); //undefined
这些操作数中 只有通过大小比较得到true或false 或者直接写的true和false才能返回false ,否则可能是原值
|| 逻辑或
let a = 10;
let b = 20;
let c = a >= b && a < b;
console.log(c); // true
在全是比较的式子中,一真为真,全假为假
! 逻辑非
逻辑非(!)也叫作取反符,用来取一个布尔值相反的值,如true的相反值是false
var isOk = !true;
console.log(isOk); // false
var num = 7;
例题2
<script>
var num = 7;
var str = "我爱你~中国";
console.log(num > 5 && str.length >= num); //false
console.log(num < 5 && str.length >= num); //false
console.log(!(num < 10)); //false
console.log(!(num < 10 || str.length == num)); //false
</script>
(五)、条件运算符
条件运算符 (三元运算符)
let res= 判断条件 ? 条件成立,返回 值1 : 条件不成立,返回值2
相当于 if...else
let score = +prompt("请输入一个成绩");
score >= 80 ? console.log("合格") : console.log("不合格");
let res = score >= 80 ? "合格" : "不合格";
console.log(res);
(六)、运算符的优先级
-
()圆括号的优先级最大
-
一元运算符 ++ 、 --( ++a 优先级小于 a++ )、 ! 、+... 、-...
-
算术运算符 *(幂) 、 、 / 、 %(取余) 、 + 、 -
-
比较运算符 < 、 <= 、 > 、 >= 、 == 、 != 、=== 、!==
-
逻辑运算符 &&(逻辑与)、|| (逻辑或)
-
三元运算符 ? :
-
赋值运算符 =、 += 、-= 、*= 、/= 、%=