一、运算符
1.运算符的优先级
JavaScript中的运算符优先级可以决定表达式求值的顺序。下面是JavaScript中的运算符优先级,由高到低:
1.[]()括号
2.后置运算符(++、–):用于对变量进行自增或自减操作
3.一元运算符(++、–、+、-、!、~、typeof、void):用于对变量进行一元操作,如取反、取负、获取类型等。
4.乘性运算符(*、/、%)用于进行乘法、除法和取余操作
5.加性运算符(+、-)用于进行加法和减法操作。
6.位运算符(<<、>>、>>>):用于进行位移操作。
7.位运算符(&、|、^):用于进行位与、位或和位异或操作。
8."按位非"运算符(~):用于对数值进行按位取反操作。
9.比较运算符(<、>、<=、>=、in、instanceof):用于进行大小比较和类型判断
10.逻辑"与"运算符(&&):用于进行逻辑与操作。
11.逻辑"或"运算符(||):用于进行逻辑或操作。
12.三元条件运算符(?:):用于根据条件选择不同的值。13. 赋值运算符(=):用于将值赋给变量。
2.算术运算符
++自增 --自减 一元运算符
+ - * / % 二元运算符
<script>
let a = 10;
let b = 20;
let c = a + b;
console.log(c); //30
console.log(a - b, a * b, a / b); //-10 200 0.5
console.log(a % b, 100 % 200, 9 % 3); //10 100 0
</script>
<script>
let d = 10;
d++; //d=d+1
d--; //a++先赋值再自增,--a先自增再赋值
++d; //d=d+1
--d;
let g = 10;
f = g++;
console.log('g=' + g, 'f=' + f); //g=11 f=10
let u = ++g;
console.log('g=' + g, 'u=' + u); //g=12 u=12
let g1 = 10;
console.log(g1++, g1); //10 11
console.log(++g1, g1); //12 12
</script>
<script>
let a1 = 10,
b1 = 2;
a1 = a1++ + --a1 - b1-- + a1++ + ++b1 - --a1 - a1-- + a1++ + --b1;
console.log(a1); //20
console.log(b1); //1
</script>
<script>
// 数字没有自增自减,变量才有
console.log(+ +a); //10
console.log(- -a); //10
</script>
3.关系运算符
关系运算符有:== === != !==;
== 相当于等于,在比较的时候会转数据类型,比较的两方只要数据一样即可;
===相当于全等(恒等),在比较的时候不会转数据类型,比较的两方必须类型和数据都一致才为真
<script>
let a=10;
let b=20;
let c=a>b;
console.log(c);//false
console.log(a<=b,8>=8);//true true
console.log(5=='5');//true
console.log(5=='5');//false
let d;
console.log(typeof d =='undefined')//true ,如果去掉引号则不等,因为typeof得到的undefined带引号;
console.log(5!=='5');//true
console.log(5!='5');//false
</script>
<script>
//1.一边数字,一边字符串数字
console.log('5'>15);//false
//2.两边都是字符串
console.log('5'>'15');//true 字符串比较用Ascall码一位一位比,这里5第一位大于15
//3.
console.log('hello'>'world');//比较h和w的Ascall码大小 false
console.log('hello'=='world');//false
//4. null undefined NaN
console.log(NaN==NaN);//和谁都不等 false
console.log(NaN==undefined);//false
console.log(null==undefined);//true
console.log(null==0,null>-1); //false true
console.log(undefined==0,undefined>-2);// false false
console.log('5'==5);
console.log(''==false);//true;
console.log([]==[]);//false
console.log({}=={});//false
</script>
4.赋值运算符
赋值运算符有:= += -= *= /= %=;
赋值运算符将一个数值赋给一个变量,即 a = 10;则 10 赋值给 a,那么 a 的值为 10。
<script>
let a=10;
let b=a;
a+=10;//a=a+10;
console.log(a);//20
console.log(a-=5,a*=5,a/=10,a%=5);//15 75 7.5 2.5
</script>
5.逻辑运算符
逻辑运算符有: && 逻辑与 ||逻辑或 !逻辑非(取反);
1.&&
两个值中只要有一个值为false就返回false
只有两个值都为true时,才会返回true
短路逻辑:运算符两侧的操作数如果第一个操作数是假的话,后面的不再执行,直接返回
第一个操作数结果,如果第一个操作数是真的话则由第二个操作数来决定结果。
运算符两边的操作数如果有一个是布尔值,结果不一定是布尔值,可能是原值
2.||
两个值中,只要有一个true就返回true
如果两个值都为false,才会返回false
js中的“或”是短路的“或”,如果第一个值是true,就不用看第二个值了
3.! 取反 ,!优先级高于&&高于||
<script>
// &&
console.log(true && false); //false
console.log(true && 8 > 5); //true
//特殊情况
console.log(true && 'hello' * 2) //NaN
console.log(true && 8); //8
console.log(false && 'hello' * 2); //false 短路逻辑不反回NaN
console.log(undefined && 'hello' * 2); //Undefined 通过bollean转换得到的还是
undefined
console.log(undefined && 'hello' * 2); //null 同上
var a = 3 > 5 && 2 < 7 && 5 == 5;
console.log(a); //false
console.log([] && 100);
</script>
<script>
console.log(true || 'hello' * 2); //true
console.log({} || null); //{},手写的真假或者通过判断语句得到的真假才能得到真假,否则是
原值
</script>
<script>
//1.
var a = 3 > 5 && 2 < 7 && 3 == 4;
console.log(a); //false
//2.
var b = 3 <= 4 || 3 > 1 || 3 != 2
console.log(b);//true
//3.
var c = 2 === "2";
console.log(c);//false
//4.
var d = !c || b && a;
console.log(d);//true
//5
console.log(!8);//false
</script>
6.条件运算符
条件运算符:又叫三元运算符,三目运算符,符号为 ?:
判断条件? value1:value2;
let res= 若条件为真,则返回value1,否则value2
<script>
//五险一金 如果你的工资大于 7662,按7662*0.225 否则按工资*0.225
let salary=prompt("请输入你的工资:")
let wx=salary>7662?7662*0.225:salary*0.225;
document.write('您需要交'+wx+'的五险一金');
</script>