操作符-一元操作符

只能操作一个值的操作符叫一元操作符。

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

 

posted @ 2015-05-25 11:32  一日三餐  阅读(1208)  评论(0编辑  收藏  举报