JavaScript运算符
- 和数学的运算符一样,JavaScript中的运算符是告诉程序执行特定算术或逻辑操作的符号
- 表达式:利用运算符链接在一起的
有意义,有结果
的语句
运算符分类
- 按功能分类
- 算数运算符
- 位运算符
- 关系运算符
- 逻辑运算符
- 根据参与运算的操作数的个数分类
- 单目运算
- 双目运算
- 三目运算
算数运算符
+ - * / %
-
算数运算符的优先级和结合性
- * / % 优先级高于+ -
- 无论是+ - * / %都是左结合性(从左至右计算)
-
算数运算符注意点
- 加法
- 任何非数值类型的数据在参与加法运算之前,都会被自动的转换成数值类型之后,再参与运算
- 任何数据和NaN进行运算,结果都是NaN
- 任何数据和字符串相加,都会先被转换成字符串之后再运算
- 减法
- 前两点与加法相同(非数值和NaN)
- 任何数据和字符串相减,都会先把字符串转换成数值类型之后再运算
- 乘法和除法与减法一模一样
- 取模(取余)
- 格式:m%n = 余数
- 如果m>n,那么正常取余
- 如果m<n,那么结果是m
- 如果n是0,那么结果是NaN
- 取余运算结果的正负形取决于m
- 加法
赋值运算符和自增自减
-
赋值运算符
= += -= *= /= %=
其中复杂的赋值运算符是将等号左边存储的值取出来和右边进行指定的运算,运算完毕之后再将运算的结果存储到左边
-
赋值运算符的优先级和结合性
- 赋值运算符的优先级低于算数运算符
- 赋值运算符的结合性是右结合性(从右至左的计算)
- 赋值运算符的左边只能放变量,不能放常量
-
自增自减运算符
++ --
可以快速的对一个变量中保存的数据进行+1或者-1操作
写在变量后面,表示变量先参与其他的运算,然后再自增或者自减
写在变量前面,表示变量先自增或者自减,然后再参与其他的运算
-
自增自减注意点
- 只能出现在变量的前面或者后面,不能出现在常量或者表达式的前面或者后面
- 在企业开发中自增自减运算符最好单独出现,不要出现在表达式中
关系运算符
> < >= <= == != === !==
关系运算符的返回值只有true和false
-
关系运算符注意点
对于非数值类型的数据,会先转换成数值类型,再进行判断
任何数据和NaN进行比较,返回值都是false
-
如果参与比较的都是字符串类型,那么不会转换成数值类型再比较,而是直接比较字符对应的unicode编码,如果字符串中有多个字符,那么会从左至右依次比较,直到条件不满足为止
企业开发中,如果想判断一个数据是否是NaN那么可以通过
isNaN
来进行判断==和!=只会判断取值,===和!==不仅会判断取值还会判断数据类型
-
关系运算符的结合性和优先级
- 关系运算符都是左结合性(从左至右的运算),所以不能用来判断区间
- 关系运算符中> < >= <=的优先级高于== != === !==
逻辑运算符
- 逻辑与 &&
- 格式: 条件表达式A && 条件表达式B
- 返回值:true false
- 特定:一假则假
- 逻辑或 ||
- 格式: 条件表达式A || 条件表达式B
- 返回值:true false
- 特点:一真则真
- 逻辑非 !
- 格式: !条件表达式
- 返回值:true false
- 特点:真变假,假变真
- 逻辑运算符的优先级和结合性
- 逻辑运算符是左结合性(从左至右的运算)
- 在逻辑运算中&&的优先级高于||
- 逻辑运算符的注意点
- 在逻辑运算中如果不是布尔类型,那么会先转换成布尔类型,再参与其他的运算
- 在逻辑与运算中,如果参与运算的不是布尔类型,返回值有一个特点
- 条件A && 条件B
- 如果条件不A成立,那么就返回条件A
- 如果条件A成立,无论条件B是否成立,都会返回条件B
- 短路现象:由于逻辑与运算的规则是一假则假,所以只要条件A是假,那么条件B就不会运算
- 在逻辑或运算中,如果参与运算的不是布尔类型,返回值有一个特点
- 如果条件A成立,那么久返回条件A
- 如果条件A不成立,无论条件B是否成立,都会返回条件B
- 段路现象:由于逻辑或运算的规则是一真则真,所以只要条件A是真,条件B就不会运算
逗号运算符
- 在JavaScript中逗号运算符一般用于简化代码
- 逗号运算符优先级和结合性
- 逗号运算符的结合性是左结合性(从左至右的运算)
- 逗号运算符的优先级是所有运算符中最低的
- 逗号运算符的运算结果就是最后一个表达式的结果
三目运算符
- 三目运算符又称之为条件运算符
- 格式: 条件表达式 ? 结果A : 结果B;
- 在三目运算符中,当条件为真的时候,就会返回结果A
- 在三目运算符中,当条件为假的时候,就会返回结果B
- 在三目运算符中? :不能单独出现,要么一起出现,要么一起不出现