js 一元操作符

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

递增和递减操作符

递增和递减操作符有前置型后置型两个版本。从字面上看也不难理解,前置型应该位于要操作的变量之前。而后置型就是位于要操作的变量之后。如下例子:

var age = 24; 
++age;  // 25

等同于

var age = 24; 
age = age + 1;

执行前置递减操作的方法也类似,结果会将数值减去1。使用前置递减时,要把两个减号放在相应的变量前边,如:

var age = 24;
--age; // 23

执行前置递增和递减操作时,变量的值都是在语句被求值以前改变的。
如下例:

var age = 24; 
var endAge = --age + 2; 
alert(age); // 23 
alert(endAge); // 25

这个例子中,变量endAge的初始值等于变量age的值前置递减之后加2。因为先执行了减法操作,age的值变成了23,所以之后再加上2的结果就为25。
前置递增和递减操作与执行语句的优先级相等,执行顺序为从左到右求值。
如下例:

var num1 = 2; 
var num2 = 20; 
var num3 = --num1 + num2; // 21 
var num4 = num1 + num2; // 21

后置型递增和递减操作符的语法不变,只不过要放在变量的后面。后置递增和递减前置递增和递减有一个非常重要的区别,即递增和递减操作是在包含它们的语句被求值之后才执行的
如下例:

var age = 24; 
age++;  // 25

当递增是这条语句的唯一操作时,结果并不会有所改变。但是,当语句中包含的还有其他的操作时,上述区别就会非常明显。

var num1 = 2; 
var num2 = 20; 
var num3 = num1-- + num2; // 22 
var num4 = num1 + num2; // 21

这时就可以看出明显的差别,根源在于这里计算num3时使用了num1的原始值 “2” 完成了计算,而num4则是使用了递减后的值 “1” 。
所有这 4 个操作符对任何值都适用,也就是它们不仅适用于整数,还可以用于字符串、布尔值、浮点数值和对象。在应用于不同的值时,递增和递减操作符遵循下列规则。

  • 在应用于一个包含有效数字字符的字符串时,先将其转换为数字值,再执行加减 1 的操作。字符串变量变成数值变量。
  • 在应用于一个不包含有效数字字符的字符串时,将变量的值设置为 NaN。字符串变量变成数值变量。
  • 在应用于布尔值 false 时,先将其转换为 0 再执行加减 1 的操作。布尔值变量变成数值变量。
  • 在应用于布尔值 true 时,先将其转换为 1 再执行加减 1 的操作。布尔值变量变成数值变量。
  • 在应用于浮点数值时,执行加减 1 的操作。
  • 在应用于对象时,先调用对象的 valueOf()方法以取得一个可供操作的值。然后对该值应用前述规则。如果结果是 NaN,则在调用 toString()方法后再应用前述规则。对象变量变成数值变量。
    如下例:
var a = "2"; 
var b = "z"; 
var c = false; 
var d = 1.1; 
var e = { 
 valueOf: function() { 
 return -1; 
 } 
}; 
a++; // 3 
b++; // NaN 
c++; // 1 
d--; // 0.10000000000000009(由于浮点舍入错误所致)
e--; // -2

一元加和减操作符

一元加和减操作符,这两个 ECMAScript 操作符的作用与数学书上讲的完全一样。一元加操作符以一个加号表示,放在数值前面,对数值不会产生任何影响。
如下例:

var num = 24; 
num = +num; // 24

在对非数值应用一元加操作符时,该操作符会像 Number()转型函数一样对这个值执行转换。也就是说,布尔值 false 和 true 将被转换为 0 和 1,字符串值会被按照一组特殊的规则进行解析,而对象是先调用它们的 valueOf()和(或)toString()方法,再转换得到的值。
如下例:

var a = "01"; 
var b = "1.1"; 
var c = "z"; 
var d = false; 
var e = 1.1; 
var f = { 
 valueOf: function() { 
 return -1; 
 } 
}; 
a = +a; // 1 
b = +b; // 1.1 
c = +c; // NaN 
d = +d; // 0 
e = +e; // 1.1 
f = +f; // -1

一元减操作符主要用于表示负数。

var a = "01"; 
var b = "1.1"; 
var c = "z"; 
var d = false; 
var e = 1.1; 
var f = { 
 valueOf: function() { 
 return -1; 
 } 
}; 
a = -a; // -1 
b = -b; // -1.1 
c = -c; // NaN 
d = -d; // 0 
e = -e; // -1.1 
f = -f; // 1

学习随笔

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值