js操作符

一、一元操作符(unary)

1. 递增/递减操作符

分类

  • 前缀版递增/递减操作符 ++age、–age
  • 后缀版递增递减操作符 age++、age–

区别

  • 后缀版递增与递减在语句被求值后才发生。正常情况下前缀版和后缀版并无差异,可是一旦与其它操作混合时,差异就会变明显。
  • 前缀版在与其它操作混合时,先对变量进行递增/递减操作,再完成混合操作(见实例2)
  • 后缀版,先完成混合操作,再递增/递减(见实例3)
let age = 29;
++age;
// 等价于
let age = 29;
age = age + 1;
实例1
let age = 29;
let anotherAge = --age + 2
console.log(age)  // 28
console.log(anotherAge)  // 30
实例2
let age = 29;
let anotherAge = age-- + 2
console.log(age)  // 28
console.log(anotherAge)  // 31
实例3
let age = "29";
console.log(age++) // 29
console.log(age) // 30
console.log(age--) // 30
console.log(++age) // 30
实例4

前缀、后缀的递增、递减这4个一元操作符可以作用于任何值——字符串、布尔值、浮点数、甚至对象,其规则如下:

  • 字符串。如果是有效的数值形式,则转换为数值再应用改变,变量类型从字符串变成数值;如果不是有效的数值形式,则将变量的值设置为NaN,变量类型从字符串变成数值。
  • 布尔值。如果是false,则转换为0再应用改变,如果是true,则转换为1再应用改变。变量类型从布尔值变成数值。
  • 浮点数。加1或减1。
  • 对象。如果是对象,则调用其valueOf()方法取得可以操作的值。对得到的值应用上述规则。如果是NaN,则调用toString()并再次应用其他规则。变量类型从对象变成数值。
let s1 = "2";
let s2 = "z";
let b = false;
let f = 1.1;
let o = {
    valueOf() {
        return -1
    }
};
console.log(s1++) // 2
console.log(s2++) // NaN
console.log(b++) // 0
console.log(f--) // 1.1
console.log(o--) // -1

console.log(s1) // 3
console.log(s2) // NaN
console.log(b) // 1
console.log(f) // 0.10000000000000009
console.log(o) //-2

2.一元加、减

  • 放在变量前头,对数值没有任何影响
  • 一元加应用到非数值,则会执行与使用Number()转型函数一样的类型转换:
    • 布尔值false和true转换为0和1;
    • 字符串根据特殊规则进行解析;
    • 对象会调用它们的valueOf()和/或toString()方法以得到可以转换的值。
let s1 = "01";
let s2 = "1.1";
let s3 = "z"
let b = false;
let f = 1.1;
let o = {
    valueOf() {
        return -1
    }
};
s1 = +s1;
s2 = +s2;
s3 = +s3;
b = +b;
f = +f;
o = +o;


console.log(s1) // 1
console.log(s2) // 1.1
console.log(s3) // NaN
console.log(b) // 0
console.log(f) // 1.1
console.log(o) //-1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值