运算符
一。算数运算符
-
+,数值(求和)字符串(拼接)
-
-,只能是数值类型,可以将别的转成数值类型
-
*,只能是数值类型,可以将别的转成数值类型
-
/,只能是数值类型,可以将别的转成数值类型
-
%,只能是数值类型,可以将别的转成数值类型。
取余可以制作轮播。 for(let i = 0;i <10;i++){ let result = i % 5 console.log(result) } 即0,1,2,3,4一直循环,五布一轮回
正常情况下,两边的数据类型要一致
运算符优先级:高级的优先级相与低级的优先级运算。
可以通过添加()来改变优先级,只能有小括号。如:((3+2)*3)+(4 * 3) * 3
二。三目运算符 (表达式:能够返回值)
1.组成:三个部分构成:A B C: A?B:C。可以相当于if else.
2.读法:如果A成立,执行B,否则执行C。如:
let isHapppy = true
isHappy?"我很高兴":"我不高兴"
结果:"我很高兴"
3.注意:B和C只能是表达式,不能是语句(带有分号的。如:console.log(a)).可以通过函数的分装来执行
4.可嵌套。案例:
let a=10,b=15,c=8
(a>b)?(a>(c?a:c)):((b>c)?b:c)
则结果:15
5.执行表达式。
function say1(){
return 1
}
function say2(){
return 2
}
let is = true
let worle=""
worle=is?say1:say2
则结果是:1
还可以这样使用,通过函数。
let is = true
function say1(){
return 1
}
function say2(){
return 2
}
function say3(){
return is
}
let worle=""
worle=(say3())?say1():say2() //三目运算符执行完成之后得出一个答案,就固定死了,后面若想改变A的值,也不会发生变化
console.log(worle)
is = false //这儿不会改变is,
则结果:1
三。逗号运算符: ,左右两边表达式
1.分隔符号,传参:函数参数,数组, 变量声明
声明多个变量:变量声明
let a=1,b=2,c=3
或let a=1,
b=2,
c=3
分隔符号,传参
function foo(a,b,c){
}
foo(1,2,3)
数组.挨个执行一遍
function foo(a,b,c){
let val = [1,2,3]
}
foo(1,2,3)
2.执行顺序。如A,B
先执行完成A,再执行B,最终B将作为整体表达式的返回结果。如
2,3
则:返回3
3,4,5
则:返回5
alert(1),2
则:先弹出1之后,后返回2
console.log(1)
则:打印1
返回undefined
console.log(1),2
则:打印1
返回2
2,console.log(1)
则:打印1
返回undefined
3.逗号运算符非常强大,类似于代码语句中的分号,所有的代码可以无条件的写成一行(用一个非常长的表达式实现所有的代码的功能,代码压缩就是最好的例子)
四。与或非运算符。&&,||,!
1,与(&&):指的就是and 并且: (两个条件同时满足才为真)这句话一般是错误的。
A&&B: a为真返回b
a为假返回a
true && false
则:返回false
false && 3
则:返回false
"" && false
则:返回 ""
0 && false
则:返回0
在判断中:为假不一定只有false
其他的数据类型都可以参与到运算符都有布尔类型的对应值,
0 NaN null undefined " " false 他们在布尔类型中对应的值是false。
与运算符相当于三目运算符,和if else.即,a && b=>a?b:a
实际用处:如
接受两个参数,返回他们的成绩
搞一个默认值。有b则执行b,没b则执行1
function times(a,b){
b = b?b:1 //三目运算符
}
为了不让显示报错,直接返回undefined。
let o={
a:{
b:{
c:123
}
}
}
console.log(o && o.b && 0.b.c) //如果先找到o,再找o.b如果没有o.b则返回undefined
兼容性写法,如果document.querySelector有些低版本不兼容,则不需要报错,让他返回undefined即可。
let find=document && document.querySelector
当document存在再去寻找元素
2.或(||)a || b
a为真返回a,
a为假返回b
2 || false
则,返回2
null || undefined
则,返回undefined
可以写成三目运算符。a || b =>a?a:b
(false || null) || 1
则,返回1
与或运算符在一起,与运算符优先级大于或
false || "1" && 0 || true
则返回true
惰性判断,已经能得出结果,绝对不会执行后面代码
true || ase || (sed && sss) //第一个为真,后面的不执行
返回结果 true.
如果一开始把true改为false则会报错
默认值的提供。如果传入值有可能是为假类型的值,就不能用这个方法,对象可以。或者用if声明一下假类型
function times(a,b){
a = a || 1 //a为真执行a,若a没有则执行默认值1
b = b || 1
}
3.非(!):取反操作
一元运算符,只能对一个值进行操作
!a 取反,并且强制返回布尔类型
会返回布尔类型,但是绝对不会改变原始数据
!0 // true
!false //true
!null //true
!undefined //true
!"" //true
简单的转换成布尔类型的方法:!!a
!"123" //false
!!"123" //true
!!!!!!!!!!"123" //true
来源:CSDN
作者:快乐的二进制鸭
链接:https://blog.csdn.net/qq_41973526/article/details/104463586