只操作一个值操作符叫做一元操作符。

递增/递减操作符

递增操作符和递减操作符具有前缀和后缀的差别。
使用前缀递增或递减操作符,变量值都会在变量被请求之前改变。而使用后缀递增或递减操作符,变量值会在被请求之后改变。
前缀递增/递减操作符:

  1. let age = 20;
  2. let newAge = ++age;
  3. console.log(newAge); //21
  4. let num1 = 12;
  5. let num2 = 13;
  6. let num = --num1 + num2;
  7. console.log(num); // 24

后缀递增/递减操作符:

  1. let age = 20;
  2. let newAge = age++;
  3. console.log(newAge); //20
  4. let num1 = 12;
  5. let num2 = 13;
  6. let num = num1-- + num2;
  7. console.log(num); // 25

而对于其他类型使用递增或递减,可以满足如下操作 :
1、如果是字符串,有效的数值形式,则转换成数值进行操作
2、如果是非数值形式的字符串,则变成NaN;
3、如果是布尔值,false转换成0后进行计算,true转换成1后进行计算
4、如果是float,则直接进行+1或-1的计算
5、如果是对象,则调用对象的valueOf()方法取得可以操作的值

一元加和减

对于数值类型来说,跟数学计算差不多,取“正”或取“负”。
对于非数值类型来说,“+”相当于Number() 转换了数据类型,而“-”则是相当于Number() 转换了数据类型后再取负值。

  1. let a = '01';
  2. let b = 's';
  3. let c = 1.1;
  4. let d = true;
  5. let e = {
  6. valueOf() {
  7. return -1;
  8. }
  9. a = -a; // -1
  10. b = -b; // NaN
  11. c = -c; // -1.1
  12. d = -d; // -1
  13. e = -e; // 1