一文搞定js中的各种基础运算符(算数运算符、关系运算符、逻辑运算符)

目录
一、 算数运算符
二、 关系运算符
三、逻辑运算符
四、运算符的优先级

一、 算数运算符

  1. 常见的算数运算符
    +: 等同于数学中的加法运算;222+333=555
    -:等同于数学中的减法运算;666-333=333
    :等同于数学中的乘法运算;3332=666
    /:等同于数学中的除法运算;666/333=2
    %:等同于数学中的取余运算;9%4=1
  2. 非number类型(string/boolean/undefined/null)的数据进行算数运算时,要先隐式转换(通过Number()函数)成数字,再进行计算
			console.log('5' - 3);//5-3=2
			console.log('5' * '3');//5*3=15
			console.log('30' / '5'); // 30/6=6
			console.log(5 - true); //5-1=4
			console.log(5 + false ); //5+0=5
			console.log(false - true); //0-1=-1			
			console.log(null + false ); //0+0=0
			console.log(null - 2); //0-2=-2
  1. NaN(包括通过Number()转换为NaN的数据)和其他数据进行运算时,结果永远等于等于NaN(与字符串的加法运算结果除外)。
			console.log('哈哈' - 5); //NaN Number('哈哈') = NaN
			console.log('5a' - 5); //NaN Number('5a') = NaN
			console.log(5 - {
    
    }); //  NaN Number({}) = NaN
			console.log(undefined %'2');//NaN Number(undefined) = NaN
			console.log('vbb3.6d' * 2); //NaN Number('vbb3.6d') = NaN
			console.log(NaN+2);//NaN 
  1. 特殊的字符串加法-任何数据和字符串进行相加操作都是在进行拼串
		console.log('我是字符串呀'+10)//'我是字符串呀10'
		console.log('5'+true +6;//'5true6'
		console.log('5'-true +'6';// '5'-true = 4 ,4 和'6'拼串,'46'
		console.log(undefined+'2';//'undefined2'
		console.log(true+(null*2+'5')+undefined);// null*2 = 0, 'true05undefined'

二、关系运算符

  1. 常见的关系运算符
    >、<、>=、<=、= =(等于) 、 ! =(不等于) 、= = =(全等于)、!==(不全等);关系运算的结果是布尔值

  2. 关系运算遵循的规则
    a.数字正常比较;
    b.非数字类型先转换成数字再进行比较
    c.字符串间进行比较时,按照位数一位一位的进行比较。

   		console.log('5' > 3);//true  5>3
   		console.log('5' != 3);//true 5!=3
   		console.log(3 != 3);//false 
   		console.log('3' != 3);//false
   		console.log('3' !== 3);//true
   		console.log(false > 0);//false 0>0
   		console.log(true > -1);//true0>-1
   		console.log(''>-1);//true 0>-1
   		console.log('5' > '4');//true
   		console.log('5a' > 3);//true
   		console.log(' ' > '');//true
   		console.log(' ' > 0);//false 0>0
   		console.log('5a' < '5b');//true
   		console.log('9a' < '3z');//false

d.默认,NaN不等于任何值,包括其自身。
e.默认,null 和undefined彼此相等,同时也等于其自己;除此外不等于其他任何值。

		console.log(undefined > -1);//false
		console.log(null > -1);//false
		console.log(null == null);//false
		console.log(null == 0);//false
		console.log(null == false);//false
		console.log(null == '');//false
		console.log(null == undefined);//true
		console.log(undefined == undefined);//true
		console.log(undefined == 0);//false
		console.log(undefined == false);//false
		console.log(undefined == '');//false
		console.log(NaN == NaN);//false

f.= =等于只要求两个数据的值大小相等就可以。
g.===全等于要求两个数据值的大小和其数据类型都相等。

		console.log('5' == 5);//true
		console.log(5 == 5);//true
		console.log('5' === 5);//false 数据类型不同
		console.log('5' === '5');//true

三、逻辑运算符(短路表达式)

1.逻辑运算符用法总结
&&(与):有假即假,都真才真
||(或):有真即真,都假才假
!(非):取反操作
2.练习

		console.log(5 > 3 && 5 > 7);//false 有假即假
		console.log(5 > 3 && 5 < 7);//true 都真才真
		console.log(5 > 3 && 5 < 7 && 3 != 3);//false
		console.log(5 > 3 || 5 > 7);//有真即真
		console.log(5 < 3 || 5 < 7);//false
		console.log(5 > 3 && 5 > 1);//true
		console.log(true && true && true);//true
		console.log(true && true);//true
		console.log(false && false && true);//false
		console.log(5 && 3);//3第一个值为真,返回第二个值
		console.log(5 && 0);//0
		console.log(0 && 5);//0 有假即假
		console.log('haha' && -5 && '');// 前两个都是true,返回最后一个,空字符串,看不见
		console.log('(*^__^*) 嘻嘻……' && ' ' && '小左同学');//'小左同学'
		console.log('5aaa' > 6 && !'yellowgreen' && 0 - 5 * (3 + 1));//false 第一个值为假,有假即假
		console.log(6 && !'yellowgreen' && 0 - 5 * (3 + 1));//false 第二个值为false,有假即假
		console.log(6 && 'yellowgreen');//yellowgreen
		console.log(!3);//false
		console.log(6 && 'yellowgreen' && 0 - 5 * (3 + 1));//-20 算数运算的优先级高于逻辑运算,先算出结果-20,前两个值为真,返回第三个值-20			  	
		console.log(!(5 < 3) && !5 < 3 && !undefined && null+'5');// null5 前3个都为true,返回拼串
		console.log(false || true || true);//true 有真即真
		console.log(5 || 3);//5有真即真
		console.log(!(5 < 3) || !5 < 3 || !undefined || null+'5');//true第一个值为真,有真即真不管后边
		console.log(5 < 3 || !5 < 3 && !undefined || null+'5');//先算&&,结果为true,有真即真
		console.log(5 && 3 || '哈哈' && 8);//3
		console.log(5 && (3 || '哈哈') && 8);//8
		console.log(0 || 5);//5

四、运算符的优先级

  1. 一元运算符(++ – !)>二元运算符>三元运算符
  2. 二元运算符的优先级:算数运算符(/ * )(+ -)> 关系运算符(> < >= <=)>逻辑运算符(&& ||)

如有错误,欢迎斧正;如有疑问,欢迎留言讨论。

猜你喜欢

转载自blog.csdn.net/xiaozuo144/article/details/109691838