一元操作符
递增和递减操作符
前置型递增和递减操作,变量的值都是在语句被求值以前改变的,在计算机科学领域,这种 情况通常被称作副效应
javascript
var age = 29;
var anotherAge = --age + 2;
alert(age); // 输出28
alert(anotherAge); // 输出30
后置型递增和递减操作,是在语句被求值之后才执行的
javascript
var num1 = 2;
var num2 = 20;
var num3 = num1-- + num2; // 等于22
var num4 = num1 + num2; // 等于21
递增和递减操作符遵循下列规则
- 在应用于一个包含有效数字字符的字符串时,先将其转换为数字值,再执行加减1 的操作。字符串变量变成数值变量
- 在应用于一个不包含有效数字字符的字符串时,将变量的值设置为NaN。字符串变量变成数值变量
- 在应用于布尔值false 时,先将其转换为0 再执行加减1 的操作。布尔值变量变成数值变量
- 在应用于布尔值true 时,先将其转换为1 再执行加减1 的操作。布尔值变量变成数值变量
- 在应用于浮点数值时,执行加减1 的操作
- 在应用于对象时,先调用对象的valueOf()方法以取得一个可供操作的值。然后对该值应用前述规则。如果结果是NaN,则在调用toString()方法后再应用前述规则。对象变量变成数值变量。
一元加和减操作符
在对非数值应用一元加操作符时,一元加和减操作符会像Number()转型函数一样,先对这个值执行转换,Number()函数转换规则,例如:
javascript
var s1 = "01";
var s2 = "1.1";
var s3 = "z";
var b = false;
var f = 1.1;
var o = {
valueOf: function () {
return -1;
},
};
s1 = +s1; // 值变成数值1
s2 = +s2; // 值变成数值1.1
s3 = +s3; // 值变成NaN
b = +b; // 值变成数值0
f = +f; // 值未变,仍然是1.1
o = +o; // 值变成数值-1