只能操作一个值的操作符叫一元操作符。
1.递增和递减操作符;
递增和递减都有两个版本:前置型和后置型。
前置型:
在执行前置的递增和递减操作时,变量的值都是在语句被求值前改变的。(在计算机科学领域,这种情况通常被称做副效应)。
var age=29; var anotherAge=--age+2; alert(age);//28 alert(anotherAge);//30
前置递增和递减操作与执行的语句的优先级相等,因此整个语句会从左至右被求值。
var num1=2; var num2=20; var num3=--num1+num2;//21 var num4=num1+num2;//21
后置型:
与前置型的区别是操作符放在变量的后面,然后就是递增和递减操作是在包含他们的语句被求值之后才执行的。
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()方法后再应用前述规则。对象变量变成数值变量。
例如:
var a1="2; var a2="z"; var b=false; var f=1.1; var o={valueOf:function(){return -1;}}; a1++;//3 a2++;//NaN b++;//1 f--;//0.100000000000000009 o--;//-2;
2.一元加和减操作符
一元加(+)操作符放在数值前面,对数值不会产生任何影响,如:
var num=25; num=+num;//25
但在非数值应用一元加操作符时,该操作符会像Number()转型函数一样对这个值执行转换。布尔值false和ture将被转换为0和1,字符串值会被按照一组特殊的规则进行解析,而对象是先调用它们的valueOf()和(或)toString()方法,再转换得到的值。
例如:
var a1="01"; var a2="1.1"; var a3="z"; var b=false; var f=1.1; var o={valueOf:function(){return -1;}}; a1=+a1;//1 a2=+a2;//1.1 a3=+a3;//NaN b=+b;//0 f=+f;//1.1 o=+o;//-1
一元减(-)操作符用于数值时表示负数。
var num=24; num=-num;//-24
而当用于非数值时,一元减操作符遵循与一元加操作符相同的规则。最后再将得到的数值转换为负数,例如:
var a1="01"; var a2="1.1"; var a3="z"; var b=false; var f=1.1; var o={valueOf:function(){return -1;}}; a1=-a1;//-1 a2=-a2;//-1.1 a3=-a3;//NaN b=-b;//0 f=-f;//-1.1 o=-o;//1