吃透JavaScript核心——运算符

287 阅读3分钟

运算符

运算符(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
);
  • false 0 "" undefined null NaN 都是false值。

逻辑(布尔)运算符

&& || !

短路运算(逻辑中断)

原理:当有多个表达式(值)时,左边的表达式值可以确定结果时,就不再继续运算右边的表达式值。

表达式1 && 表达式2

  • 如果第一个表达式的值为真,则返回表达式2
  • 如果第一个表达式的值为假,则返回表达式1

表达式1 || 表达式2

  • 如果第一个表达式的值为真,则返回表达式1
  • 如果第一个表达式的值为假,则返回表达式2 注:空的或者否定的为假,其余的为真0 null '' undefined NaN

赋值运算符

= += -= *= /= %=

运算符优先级

优先级运算符顺序
1小括号()
2一元运算符++ -- !
3算数运算符* /+ -
4关系运算符> >= < <=
5相等运算符== != === !==
6逻辑运算符&&
7赋值运算符=
8逗号运算符,