整体介绍
表达式和运算符 JS基本表达式 1)算术表达式 2)关系表达式 3)逻辑表达式 4)赋值表达式 5)综合表达式
表达式和运算符
表达式种类
算术表达式
加减乘除
加减的符号和数学一致,乘法是*号,除法是/号 默认情况,乘除法的优先级要高于加法和减法;必要时可以使用圆括号来改变运算的顺序
1+2*3; //7
(1+2)*3; //9
1+2/4; //1.5
((1+2)*3+4)/2; //6.5
加号两种作用
加号有“加法”和“连字符”两种作用
如果加号两边的操作数都是数字,则为“加法”,否则为连字符
1+2 //3
1+'2'; //'12'
'1'+'2'; //'12'
取余运算
取余运算也叫作“求模运算”,用百分号“%”表示 a%b表示求a除以b的余数,它不关心整数部分,只关心余数
隐式类型转换
如果参与数学运算的某操作数不是数字型,那么JavaScript会自动将此操作数转换为数字型
3 * '4' //12
隐式转换的本质是内部调用Number()函数
true+true //2
false + 2 //2
3 * '2天' //NaN
有关IEEE754
在JavaScript中,有些小数的数学运算不是很精准
0.1 + 0.2 //0.30000000000000004
JavaScript使用了IEEE754二进制浮点数算术标准,这会使一些个别的小数运算产生“丢失精度”问题 解决办法:在进行小数运算时,要调用数字的toFixed()方法保留指定的小数位数
幂和开根号
JavaScriptr中没有提供幂计算、开根号的运算符。需要使用Math对象的相关方法进行计算。
向上取整和向下取整
Math.ceil()向上取整;Math.floor()向下取整
关系表达式
大于和小于
大于>、小于<两个符号和数学相同 “大于等于”运算符是>=,“小于等于”运算符是⇐
判断是否相等
如果想比较两个值是否相等,此时应该使用==运算符
JavaScript中等号=表示赋值,而并不是相等。判断相等应该使用==运算符
3==3 //true
3===3 //true
3=3 //错误语句
相等和全等
两个等号==运算符不比较值的类型,它会进行隐式转换后比较值是否相等
三个等号===运算符,不仅比较值是否相同,也比较类型是否相同
5 == '5'; //true
5 === '5' //false
NaN不自等
NaN作为一个特殊的数字类型值,它在用==比较的时候也有特殊的结果
NaN==NaN //false
NaN===NaN //false
如何判断某变量值为NaN
isNaN()函数可以用来判断变量值是否为NaN
isNaN(NaN) //true
isNaN(5) //false
但isNaN()也不好用,它的机理是:只要该变量传入Number()的执行结果是NaN,则isNaN()函数都会得到true
isNaN(undefined) //true
isNaN('3天') //true
isNaN(null) //false
不相等和不全等
!=表示不相等,!==表示不全等
5 != 6 //true
5 != 6 //true
5 != '5' //false
5 !== '5' //true
JS中没有连比
判断变量a是不是介于3到15之间,应该怎么写呢?
3<=a<=15
逻辑表达式
逻辑运算符
非运算
!表示“非”,也可以称为“置反运算” !是一个“单目运算符”,只需要一个操作数 置反运算结果一定是布尔值
对于数字来说,只有0和NaN是负性的,对于字符串来说,只要里面有内容,就一定是正性的 书写两个叹号并非是它本身,而是布尔值
与运算
&&表示“并且”,称为“与运算”,口诀:都真才真
true && true //true
true && false //false
false && true //false
false && false //false
或运算
||表示“或者”,称为”或运算”,口诀:有真就真
true || true //true
true || false //true
false || true //true
false || false //false
短路计算
请思考下面表达式的运算结果 3 && 6
3 && 6 //6
undefined && 15 //undefined
15 && undefined //undefined
null && 2 //null
'' && 16 //''
NaN && undefined //NaN
3 || 6 //3
0 || 6 //6
null || undefined //undefined
'a' || 'b' //'a'
NaN || null //null
上面学的例子其实也遵循短路运算
逻辑运算顺序
逻辑运算的优先级是:非→与→或
!true || true //true
3 && 4 || 5 && 6 //4
赋值表达式
赋值运算符
JS中,=表示赋值,判断是否相等(不判断类型),=判断是否全等 赋值运算符会将等号右边的数值,赋予等号左边的变量
赋值运算也产生值
赋值运算也产生值,等号后面的值将作为“赋值运算的值”
var a;
console.log(a 4); //4
这就意味着,可以连续使用赋值运算符
var a,b,c;
a=b=c=15;
console.log(a); //15
console.log(b); //15
console.log(c); //15
快捷赋值
快捷赋值运算符表示在原数值基础上进一步进行运算
var a = 3;
a+=5; //等价于a=a+5
console.log(a); //8
自增/自减运算符
++和—是自增/自减运算符,表示在自身基础上加1或减1
a++和++a的区别
a++先用再加;++a先加再用
综合表达式
综合运算的运算顺序
运算顺序:非运算→数学运算→关系运算→逻辑运算
5 < 3 + 3 // true
3 > 2 && 8 > 3 + 4 // true
3 > 2 && 8 > 3 + 5 //false
!13 < 5 - 3 //true
!13 < 5 - 5 //false
变量的范围表示
验证变量a是否介于5到12之间
如果a=100,5⇐a⇐12,自左向右运算,a>=5为true,值为1,1⇐12,结果正确,所以不符合预期,错误❌
小案例
闰年判断
公历闰年的简单计算方法(符合以下条件之一即可) 1.能被4整除且不能被100整除。 2.能被10整除也能被400整除。