这是我参与8月更文挑战的第九天,活动详情查看:8月更文挑战
操作符
乘法操作符
乘法操作符用(*)表示。需要注意的是乘法操作符的一些特殊规则:
- 如果任一操作数是NaN,那么返回NaN
- 如果是Infinity乘0,那么返回NaN
- 如果是Infinity乘非零的数,那么返回Infinity或者-Infinity(根据非零数符号决定)
- 如果是Infinity乘Infinity,那么返回Infinity
- 如果操作数不是数值,那么会先调用Number()转型函数,然后再乘。
除法操作符
除法操作符用(/)表示。这里也需要注意一些除法操作符的特殊规则:
- 如果任一操作数是NaN,那么返回NaN
- 如果是0除以0,那么返回NaN
- 如果是Infinity除以Infinity,那么返回NaN
- 如果是非零数除以0,那么返回Infinity或者-Infinity(根据非零数符号决定)
- 如果操作数不是数值,那么会先调用Number()转型函数,然后再乘。
- 如果是Infinity除以非零的数,那么返回Infinity或者-Infinity(根据非零数符号决定)
- 如果操作数不是数值,那么会先调用Number()转型函数,然后再除。
取模操作符
取模(余数)操作符用(%)表示。特殊规则如下:
- 如果被除数是无限值,除数是有限值,那么返回NaN
- 如果被除数是有限值,除数是0,那么返回NaN
- 如果是Infinity除以Infinity,那么返回NaN
- 如果被除数是有限值,除数是无限制,那么返回被除数
- 如果被除数是0,除数不是0,那么返回0
- 如果操作数不是数值,那么会先调用Number()转型函数,然后再除。
指数操作符
指数操作符用(**)表示,需要注意的是指数操作符是ES7新增的。
console.log(16** 0.5) //4
加性操作符
加性操作符用(+)表示,需要注意的是,如果操作数有字符串,那么会执行字符串拼接
减性操作符
减性操作符用(-)表示。
关系操作符
关系操作符包括小于(<),大于(>),小于等于(<=)和大于等于(>=)。需要注意的是:
-
如果操作数都是字符串,则逐个比较字符串中对应字符的编码
-
如果有任一操作数是对象,则调用其 valueOf() 方法,取得结果后再根据前面的规则执行比较。
-
如果没有 valueOf() 操作符,则调用 toString() 方法,取得结果后再根据前面的规则执行比较。
-
如果有任一操作数是布尔值,则将其转换为数值再执行比较。
相等操作符
相等操作符用(==)表示,全等操作符用(===)表示。需要注意的是,相等操作在比较前会执行类型转换,而全等操作不会执行类型转换。所以全等操作符会比较数据类型。
条件操作符
条件操作符就是三目运算符
let max = (num1 > num2) ? num1 : num2;
赋值操作符
除了最简单的赋值操作符以外,还有一些复合赋值操作符:
- 乘后赋值(*=)
- 除后赋值(/=)
- 取模后赋值(%=)
- 加后赋值(+=)
- 减后赋值(-=)
- 左移后赋值(<<=)
- 右移后赋值(>>=)
- 无符号右移后赋值(>>>=)
逗号操作符
逗号操作符用(,)表示,可以用来在一条语句执行多个操作:
let a = 1,b = 2,c = 3;
但是需要注意的是逗号操作符的特殊行为:
let a = (1,2,3,4,5,6,10);
console.log(a); //a的值为10