递增/递减操作符
递增操作符和递减操作符具有前缀和后缀的差别。
使用前缀递增或递减操作符,变量值都会在变量被请求之前改变。而使用后缀递增或递减操作符,变量值会在被请求之后改变。
前缀递增/递减操作符:
let age = 20;let newAge = ++age;console.log(newAge); //21let num1 = 12;let num2 = 13;let num = --num1 + num2;console.log(num); // 24
后缀递增/递减操作符:
let age = 20;let newAge = age++;console.log(newAge); //20let num1 = 12;let num2 = 13;let num = num1-- + num2;console.log(num); // 25
而对于其他类型使用递增或递减,可以满足如下操作 :
1、如果是字符串,有效的数值形式,则转换成数值进行操作
2、如果是非数值形式的字符串,则变成NaN;
3、如果是布尔值,false转换成0后进行计算,true转换成1后进行计算
4、如果是float,则直接进行+1或-1的计算
5、如果是对象,则调用对象的valueOf()方法取得可以操作的值
一元加和减
对于数值类型来说,跟数学计算差不多,取“正”或取“负”。
对于非数值类型来说,“+”相当于Number() 转换了数据类型,而“-”则是相当于Number() 转换了数据类型后再取负值。
let a = '01';let b = 's';let c = 1.1;let d = true;let e = {valueOf() {return -1;}a = -a; // -1b = -b; // NaNc = -c; // -1.1d = -d; // -1e = -e; // 1
