第四章 运算符和表达式

1. 运算符和表达式的概念

1.1 运算符

运算符就是参与运算的符号,像+-*/ 等。

与运算符一起运算的变量、直接量称之为操作数

1.2 表达式

1) 表达式是变量或者直接量与运算符组成的式子,表达式会有一个计算结果,称之为表达式的值,也就是说表达式是有值的。

2) 最简单的表达式是"原始表达式", 如 直接量、 变量名、 关键字等。

3) 复杂表达式由简单表达式组成, 运算符何以将简单表达式组合成复杂表达式。

4) 注意带有副作用的表达式,这样的表达式除了有表达式的计算结果之外,还会对表达式中的变量产生影响。

2. 运算符的分类

2.1 按照操作数个数

  • 一元运算符
  • 二元运算符
  • 三元运算符

2.2 按照运算符功能

  • 算数运算符
  • 关系运算符
  • 逻辑运算符
  • 位运算符
  • 赋值运算符
  • 其他运算符

3 运算符详解(按照功能)

3.1 算术运算符

运算符 运算符含义 操作数个数 组成的表达式的值的类型 组成的表达式有无副作用
+ 加法运算符 2 number
- 加法运算符 2 number
* 乘法运算符 2 number
/ 除法运算符 2 number
% 取余(取模)运算符 2 number
+ 正号运算符 1 number
- 负号运算符 1 number
++ 递增运算符 1 number
-- 递减运算符 1 Number

3.2 关系运算符

运算符 运算符含义 操作数个数 组成的表达式的值的类型 组成的表达式有无副作用
== 相等运算符 2 boolean
!= 不等运算符 2 boolean
=== 全等运算符 2 boolean
!== 不全等运算符 2 boolean
< 小于运算符 2 boolean
> 大于运算符 2 boolean
<= 小于或等于运算符 2 boolean
>= 大于或等于运算符 2 boolean
in 判断一个值是否属于某个数组或者一个属性是否属于一个对象 2 boolean
instanceof 判断一个对象的实例是否属于某个对象 2 boolean

两个数据在使用关系运算符进行判等的时候,会发生自动类型转换,规则如下:

1)判等的时候(==):

  • 先看两边是不是同种数据类型,如果是直接看是不是一样;如果不是那么两边都转数字
  • 当遇到 null 的时候,会有特殊情况发生。
    • 特殊情况:空串和null不相等
    • 特殊情况:false和null不相等
    • 特殊情况:0和null不相等
    • 特殊情况:undefined 和 null 相等;

2)判断全等(===):(不会出现类型转换)

  • 在判断全等的时候,必须类型和值都相同。
  • 如果有一个不一样,就不全等;

3.3 逻辑运算符

运算符 运算符含义 操作数个数 组成的表达式的值的类型 组成的表达式有无副作用
&& 逻辑与运算符 2 会把其中一个操作数的值作为整个表达式的值
|| 逻辑或运算符 2 会把其中一个操作数的值作为整个表达式的值
! 逻辑非运算符 1 boolean

5.4 位运算符

运算符 运算符含义 操作数个数 组成的表达式的值的类型 组成的表达式有无副作用
& 按位与运算符 2 interger
| 按位或运算符 2 interger
^ 按位异或运算符 2 interger
~ 按位非运算符 1 interger
<< 按位左移运算符 1 interger
>> 按位右移运算符 1 interger
>>> 按位无符号右移运算符 1 interger

5.5 赋值运算符

运算符 运算符含义 操作数个数 组成的表达式的值的类型 组成的表达式有无副作用
= 赋值运算符 2 取决于右边的操作数
+= 赋值求和运算符 2 number
-= 赋值求差运算符 2 number
*= 赋值求积运算符 2 number
/= 赋值商运算符 2 number
%= 赋值求余运算 2 number
&= 赋值按位与运算符 2 interger
|= 赋值按位或运算符 2 interger
^= 赋值按位异或运算符 2 interger
<<= 赋值左位移运算符 2 interger
>>= 赋值右位移运算符 2 interger
>>>= 赋值无符号右位移运算符 2 interger
+= 赋值字符串连接运算符 2 string

5.6 其他运算符

运算符 运算符含义 操作数个数 组成的表达式的值的类型 组成的表达式有无副作用
?: 条件运算符(JavaScript 中唯一的三元运算符) 3 取决于中间和后面的操作数
typeof 判断操作数类型 1 string
+ 字符串连接符 2 string
delete 删除对象属性或者数组元素 1 boolean
, 逗号运算符 2 取决于第二个操作数的值

4 运算符优先级

运算符优先级

注意:

给表达式中的一部分添加(),可以提高此处的优先级。

results matching ""

    No results matching ""