JavaScript中的自增和自减

目录

++和--就是属于一元操作符

类似于 a+++a 这种式子,浏览器会自动将其扫描为: (a++)+a;


1.一元操作符:只操作一个变量的符号

++和--就是属于一元操作符

var a = 20;
++a;             
console.log(a);  //21

var b = 20;
b++;
console.log(b);  //21

var c = 10;
console.log(++c);   //先把变量c中的值加1变为11,再取c的值11打印
console.log(c);     //取c保存的值并打印11

var d = 10;
console.log(d++);    //取值,取d变量中保存的值10并打印,d变为11 ,但这里打印的是10
console.log(d);      //11
  

总结:如果单独写一行 ++a; 或者 a++;效果是一样的,像上面对变量a,b操作一样。

           如果自增,自减结合其它代码写,就是要区分++在前和在后,像上面对变量c,d操作一样。

        前置++(++c):就是先把变量保存的值修改了,再取修改后变量保存的值操作

        后置++(d++):就是先取变量保存的值,再把变量保存的值进行加1后存入变量

        无论前置还是后置,既有存值操作也有取值操作

                eg: var a = 10; a++;

                先取a变量中的值10,然后a的值+1变11后再存入进去。

                eg:var a = 10;++a;

                先把a值加1变为11存进a里面,再取出a的值11

                

        --同上

//eg:
var a = 10;
a = (a++) + (++a);
console.log(a);

分析:1.(a++):先取出a的值10用,a再变为11 。所以(a++)整体得到的是 10

           2.第1步a已经变为11,(++a):a的值先修改(加1)为12,再取出a的值12.所以(++a)整体得到的是12 ,此时a已经变为12

            3.总的就是 10 + 12  结果为22

类似于 a+++a 这种式子,浏览器会自动将其扫描为: (a++)+a;

eg:一道+++的题

var obj = {
   age: 20
};
var a = 100;
var c = -a+++obj.age++;
console.log(c); 
console.log(obj.age);

 分析:咋一看,+++什么鬼?再仔细一看,应该是:var c = - a++ + obj.age++;  这题要结合着运算符优先级来看,看表说话:

 

可以看到关于此题的优先级:. > ++ > + /-

也就是 1. obj.age 取值 20

            2.a++  a取值100用,然后a的值变为101

            3.obj.age++ 取值20用,然后 obj.age变为21

            4.现在就是:var c = -100 + 20  所以console.log(c)结果为-80

eg:再看一道+++的题

var a=0.1,b=a+++a,c=a--+b;
console.log(a,b,c);

分析:类似于 a+++a 这种式子,浏览器会自动将其扫描为: (a++)+a;

           所以 b = a+++a;就是:b = (a++)+a;   a++整体结果:0.1  此时a =1.1 所以b = 1.2

           所有 c = a--+b;  就是 c = (a--)+b; (a--)整体结果为:1.1,此时a = 0.1, 所以c =                    1.1+1.2=2.3

           所有总的就是:a = 0.1,b=1.2,c = 2.3;

注意:因为精度问题,a,b,c后面都会有很多小数位。

eg:再看一道+++题

var a = 2;
var b = 3;
var c = (++a) + (b++) + b + (a++) - a;
console.log(c);

分析:优先级:()> ++ > +/-

     var c = ++a + b+++b + (a++) -a;  这种写法跟题目中的写法是一样的。  

    后面就不用说了吧,简单,结果为9       

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值