目录
一、 算数运算符
二、 关系运算符
三、逻辑运算符
四、运算符的优先级
一、 算数运算符
- 常见的算数运算符
+: 等同于数学中的加法运算;222+333=555
-:等同于数学中的减法运算;666-333=333
:等同于数学中的乘法运算;3332=666
/:等同于数学中的除法运算;666/333=2
%:等同于数学中的取余运算;9%4=1 - 非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
- 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
- 特殊的字符串加法-任何数据和字符串进行相加操作都是在进行拼串
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'
二、关系运算符
-
常见的关系运算符
>、<、>=、<=、= =(等于) 、 ! =(不等于) 、= = =(全等于)、!==(不全等);关系运算的结果是布尔值 -
关系运算遵循的规则
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
四、运算符的优先级
- 一元运算符(++ – !)>二元运算符>三元运算符
- 二元运算符的优先级:算数运算符(/ * )(+ -)> 关系运算符(> < >= <=)>逻辑运算符(&& ||)
如有错误,欢迎斧正;如有疑问,欢迎留言讨论。