五、运算符
(一)运算符导读
(二)算数运算符
运算符也被称为操作符,是用于实现赋值,比较和执行算术运算等功能的符号.
JS中的常用运算符有:
算术运算符:
与其它语言一样,JS浮点数运算是不精确的,会有微小的误差.
var result=0.1+0.2; 结果不是0.3,是0.3000000000000000004
也不能用浮点数比较是否相等,尽量避开
var num=0.1+0.2; console.log(num==0.3); //结果为false
(三)表达式和返回值
表达式:是由数字,运算符,变量等以能求得数值有意义的排列方法所得的组合
表达式最终都会有一个结果返回给我们,称为返回值.
(四)递增递减运算符
-
前置运算符
将递增递减运算符放在变量前面
++num; --num;
返回值为num+1.先自加,再返回值
var p=10; console.log(++p+10); //返回值为21
-
后置运算符
递增递减运算放在变量后面
num++; num--;
返回值为num,然后num才+1.先返回值,再自加
var p=10; console.log(p++ +10); //返回值为20
开发时,大多使用后置递增.
(五)比较运算符
比较运算符也叫关系运算符.是将两个数据比较时用的运算符.比较运算后,会返回一个布尔值作为比较运算的结果。
注意:如果只是单纯的比较大小,是不能比较出类型的不同的.因为js是弱类型语言,会默认转换数据类型.
如果要判断是否完全一样,要用全等"===",因为它要求值和数据类型完全一样
console.log(18=='18'); //结果为true console.log(18==='18'); //结果为false
(五)逻辑运算符
逻辑运算符是用来进行布尔值运算的运算符,其返回值也是布尔值,经常用于多个条件的判断.
如果是两个number进行运算,0看作false,其他的都看作true.
其他的,'',null,undefined,NaN看作false,其他的看作true
返回的值不是true或false,而是返回表达式!!!当然,返回的表达式的布尔值与总的布尔值相同
JS中有一种特殊情况叫逻辑中断(短路运算):当有多个表达式时,当左边的表达式可以确定运算结果时,不再继续运算右边的表达式
-
逻辑与短路运算:
-
语法: 表达式1 && 表达式2
-
如果第一个表达式的值为true,则返回表达式2
-
如果第一个表达式的值为false,则返回表达式1
console.log(0&& 1+2 && 456*789); //第一个是0,后面的短路,不再运算 //返回值为0
-
-
逻辑或短路运算:
-
语法:表达式1 ||表达式2
-
如果第一个表达式的值为true,则返回表达式1
-
如果第一个表达式的值为false,则返回表达式2
console.log(123 || 456 || 789); //返回值为123.注意,返回值不是true,是123 console.log(0 ||456 ||789); //返回值为456.
-
(六)赋值运算符
把右边的数据赋值给左边
(七)运算符优先级
优先级排行:
-
小括号:()
-
一元运算符: ++ -- !
-
算术运算符: 先乘除后加减
-
关系运算符: > < >= <=
-
相等运算符: = = ! = = = = ! = =
-
逻辑运算符: 先&&后||
-
赋值运算符: =
-
逗号运算符: ,
注意:逻辑与的优先级比逻辑或高!!!