操作数据值的操作符,包括数学操作符(如加、减)、位操作符、关系操作符和相等操作符等。 只操作一个值的操作符叫一元操作符(unary operator)。 在这个例子中,前缀递增操作符把age的值变成了30(给之前的值29加1)。因此,它实际上等于如下表达式: 前缀递减操作符也类似,只不过是从一个数值减1。 无论使用前缀递增还是前缀递减操作符,变量的值都会在语句被求值之前改变 let age = 44; let anotherAge = --age + 2; console.log(age); // 43 console.log(anotherAge); // 45
前缀递增和递减在语句中的优先级是相等的,因此会从左到右依次求值 let num1 = 2; let num2 = 20; let num3 = --num1 + num2; let num4 = num1 + num2; console.log(num3); // 21 console.log(num4); // 21
num3等于21是因为num1先减1之后才加num2。 变量num4也是21,那是因为加法使用的也是递减后的值。 let num1 = 2; let num2 = 20; let num3=num1--+num2; let num4 = num1 + num2; console.log(num3); // 22 console.log(num4); // 21
num3的值是22,num4的值是21。 这里的不同之处在于,计算num3时使用的是num1的原始值(2),而计算num4时使用的是num1递减后的值(1)。 let s1 = "2"; let s2 = "z"; let b = false; let f = 1.1; let o = { valueOf() { return -1; } }; s1++; // 值变成数值3 s2++; // 值变成NaN b++; // 值变成数值1 f--; // 值变成0.10000000000000009(因为浮点数不精确) o--; // 值变成-2
对于字符串如果是有效的数值形式,则转换为数值再应用改变。变量类型从字符串变成数值。 对于字符串,如果不是有效的数值形式,则将变量的值设置为NaN。 对于布尔值,如果是false,则转换为0再应用改变;如果是true,则转换为1再应用改变。 对于浮点值,加1或减1。
完毕
|