运算符

淺唱寂寞╮ 提交于 2020-02-24 04:15:41

运算符

一。算数运算符

  1. +,数值(求和)字符串(拼接)

  2. -,只能是数值类型,可以将别的转成数值类型

  3. *,只能是数值类型,可以将别的转成数值类型

  4. /,只能是数值类型,可以将别的转成数值类型

  5. %,只能是数值类型,可以将别的转成数值类型。

    取余可以制作轮播。
    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=3let 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
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!