day02:js基础——运算符详解

1.JS运算符分类

运算符类型表示符号
数学运算符+ , - , * , / , %
比较运算符>, >=, <, <=, == , !=, === , !==
赋值运算符=, += , -=, *=, /= , %=
逻辑运算符&& , || , !
一元运算符++ , --,
三元运算符? :

2. 运算符的使用说明

  在上文我们列举了js中的运算符类型以及表示符号,下面配合代码进行学习。

2.1 数学运算符

js为弱类型语言,对类型的声明不做强制要求,所以我们正在进行运算的时候需要自己格外注意数据的类型

	    // 顾名思义,数学运算符用于进行数学运算
        // 先定义一些变量, 回想一下上一天的数据类型
        var num1 = 1,num2 = 2  
        var str1 = '1' , num3
        var num4 = NaN , str2 = ''
        var num5 = null, str3 = 'undefined'
        var bo1 = true, bo2 = false
        // 1. + 运算,用于进行加法运算
        console.log(num1+num2) // 3
        console.log(num1+str1) // 11
        console.log(num1+num4) // NaN
        console.log(num1+num3) // NaN
        console.log(num1+bo1)  // 2
        console.log(num1+bo2)  // 1  
        console.log(num1+num5)  // 1

        console.log(str1+str2) // 1 
        console.log(str1+str3) // 1undefined
        console.log(str1+bo1)  // 1true
        console.log(str1+bo2)  // 1false
        console.log(str1+num3) // 1undefined
        console.log(str1+num5) // 1null

        console.log(bo1+bo2) // 1
        console.log(bo1+num5) // 1
        // 2. - 运算,用于进行减法运算
        console.log(num1-num2) // -1
        console.log(num1-bo1)  // 0
        console.log(str1-str3) // NaN
        console.log(str1-bo1)  // 0

        // 3. * 运算,用于进行乘法运算
        console.log(num1*num2) // 2
        console.log(str1*str3) // NaN
        console.log(str1*bo1)  // 1

        // 4. / 运算,用于进行除法运算
        console.log(num2/num1) // 2
        console.log(str1/str3) // NaN
        console.log(str1/bo1)  // 1

        // 5. % 运算,用于进行取余数运算
        var num6 = 7
        console.log(num2%num1) // 0
        console.log(str1%str3) // NaN
        console.log(num6%num2)  // 1
  • 为什么会出现以上情况
    • 当加法遇到字符串,只要一侧有字符串,另一侧会自动转换成字符串,然后进行拼接;
    • 其他的运算都会先将左右的数据转换成数值(这里的转换是js自动使用Number方法进行转换,不再进行赘述)然后进行数学运算。

熟练掌握数据类型转换,记住'+'运算只有在遇到字符串才会转string,其余均通过Number()方法转换之后在进行数学运算

2.2 比较运算符

该运算符主要用于条件判断,其表达式返回一个布尔值

        var num1 = 10, num2 = 20, num3 = 10
        var str1 = '10', str2 = '20'
        console.log(num1 > num2)  //false 
        console.log(num1 < num2)  //true
        
        console.log(num1 >= num2)  //false 
        console.log(num1 <= num3)  //true

        console.log(num1 == str1)  //true 
        console.log(num1 === str1)  //false

        console.log(num1 != str1)  //false 
        console.log(num1 !== str1)  //true
  • 注意以下两点即可
    • <=, >= 表示的是大于 或者 等于
    • == , === 区别在于前一个只对于值进行比较,后一个对于值和类型都进行比较
    • != , !== 区别同上

2.3 赋值运算符

用于对变量赋值

        // = , 赋值
        var num1 = 1, num2 = 2 , num3 = 9
        // += -= /=  %=  均先进行数学运算在进行赋值
        console.log(num1+=num2)  // 等同于 num1 = num1+num2
        console.log(num1-=num2)  // 等同于 num1 = num1-num2
        console.log(num3%=num2)  // 等同于 num3 = num3%num2
        console.log(num3/=num2)  // 等同于 num3 = num1/num2

思考一下这里的输出结果是多少?

2.4 逻辑运算符

用于判断时进行多条件的连接

符号效果
&&条件均为真才返回true
||条件有一个为真返回true
对条件取反

根据上表以及2.2小节思考多条件连接的打印结果

	    var a = 11>10    
        // 取反   
        console.log(!a) 
        // 多条件连接
        console.log(14>10 && 20>5 && 2=='2')
        console.log(14>10 && 20>5 && 2==='2')
        console.log(14>10 && 20>5 || 2=='2')
        console.log(14>10 && 20>5 || 2=='2')
        // 逻辑短路问题
        14>11 && alert('我执行了吗?')
        10>11 && alert('我执行了吗?')
        14>11 || alert('我执行了吗?')
        10>11 || alert('我执行了吗?')

逻辑短路问题

	在js中,存在逻辑短路问题。
	代码从左向右执行
	- 当遇到&&连接的左侧条件为假,js会判断此语句后面写啥都改变不了判断的结果,此时产生短路&&右侧的代码均不执行
	- 当遇到||连接的左侧条件为真,js会判断此语句后面写啥都改变不了判断的结果,此时产生短路||右侧的代码均不执行

2.5 一元运算符

        var num1 = 1, num2 = 2
        console.log(num1++)  //1
        console.log(num1)    //2
        console.log(++num2)  //3

一元运算符分为前置、后置。

  • 当运算符在前面,为前置运算符,作用为不管此变量进行运算,输出等操作先执行前置运算。
  • 当运算符在后面,为后置运算符,作用为不管此变量进行运算,输出等操作先使用原来值,然后进行后置运算。

2.6 三元运算符

用法:条件? 结果1:结果2

	    //  当条件满足执行结果1, 不满足执行结果2
        console.log(10>5?'结果1':'结果2')
        console.log(10<5?'结果1':'结果2')

对于三元运算符后续会进行更加详细的说明

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值