运算符
运算符(operator)也被称为操作符,是用于实现赋值、比较和执行算数运算等功能的符合。
算术运算符
概述
- 算数运算符有:
+-*/%
浮点数精度问题
浮点数的最高精度为17位小数,但在进行算数计算时其精度远远不如整数。
-
浮点数算数运算里会有问题
console.log(0.1+0.2);//0.30000000000000004 console.log(0.007*100);//7.000000000000001 var num=0.1+0.2; console.log(num==0.3);//false
表达式和返回值
表达式:由数字、运算符、变量等组成的式子。
一个函数的函数名也是一个变量。函数名变量通常用来把函数的处理结果数据返回给调用函数,即递归调用,因此一般把函数名变量称为返回值,函数的返回值类型是在定义函数时指定的。
递增和递减运算符
使用
++--运算符反复给数字变量添加或减去1。
JS中,递增和递减既可放在变量前(前置递增/减运算符),也可放在变量后(后置>递增/减运算符)。
递增递减运算符必须和变量配合使用。 | 前置递增 | 后置递增 | 前置递减 | 后置递减 |
| --- | --- |---| --- | | ++num | num++ | --num | num-- | | 先+1 后返回值 | 先返回原值 后+1 | 先-1 后返回值 | 先返回原值 后-1 |
- 前置和后置,单独使用,结果相同。如果和其他代码联用,执行结果会不同:后置先原值计算后自加,前置先自加,后运算。
- 开发时大多使用后置递增。
比较运算符(关系运算符)
比较运算符(关系运算符)是两个数据进行比较时所用的运算符,比较运算后,会返回一个布尔值(true/false)作为比较运算的结果。
==默认会转换数据类型,把字符串型的数据转换为数字型数据(隐式转换)。===要求两侧的值和数据类型完全一致。建议使用===,因为不会进行数据转换。
console.log(18=='18');//true
console.log(18==='18');//false
console.log(
1 == 1,//true
1 == "1",//true
1 == true,//true
0 == false,//true
'' == false,//true
null == undefined,//true
);
false0""undefinednullNaN都是false值。
逻辑(布尔)运算符
&& || !
短路运算(逻辑中断)
原理:当有多个表达式(值)时,左边的表达式值可以确定结果时,就不再继续运算右边的表达式值。
表达式1 && 表达式2
- 如果第一个表达式的值为真,则返回表达式2
- 如果第一个表达式的值为假,则返回表达式1
表达式1 || 表达式2
- 如果第一个表达式的值为真,则返回表达式1
- 如果第一个表达式的值为假,则返回表达式2
注:空的或者否定的为假,其余的为真
0null''undefinedNaN
赋值运算符
= += -= *= /= %=
运算符优先级
| 优先级 | 运算符 | 顺序 |
|---|---|---|
| 1 | 小括号 | () |
| 2 | 一元运算符 | ++ -- ! |
| 3 | 算数运算符 | 先* / 后+ - |
| 4 | 关系运算符 | > >= < <= |
| 5 | 相等运算符 | == != === !== |
| 6 | 逻辑运算符 | 先&&后或 |
| 7 | 赋值运算符 | = |
| 8 | 逗号运算符 | , |