初识JavaScript最容易模糊的三大问题

第一:y++与 ++y的问题

  • y++:这是一个表达式,等于y之前的值
  • ++y:值先自加

     var y=4,z=0;
     z=y++;
    console.log(“z=”+z);
    console.log("y="+y);
    

    结果是:z=4 y=5;
    结果分析:对于z=y++来说,它是表示将y赋值给z,y再自加1,,所以z的值是y自加之前的;而y的值是y=y+1之后的值

实战练习:

var a= 2,z=0;
z=(a++)+(++a)+(a++)+(++a);
alert(z);

计算结果是:16.
分析见图:





第二:逻辑与&和逻辑非|的短路现象

 var result, x=3;
 var y=4;
 result= x < 20 && y++ >10;
 console.log(result);
 console.log(y);

输出结果:flase y==5

 var result, x=3;
 var y=4;
 result= x > 20 && y++ >10;
 console.log(result);
 console.log(y);

输出结果:flase y=4

这是怎么造成的呢?
在这里我们注意到,只改变了 result= x < 20 && y++ >10;这条语句,在执行&&运算时,只有两个条件都为false时,输出结果才能是false,当第一个条件执行结果就为false时,后面的那个条件就不会再执行了。这样便出现了短路的现象,导致y的自加不会计算

逻辑||运算和逻辑&&同理,逻辑||在满足一个条件为true时,结果就会返回true,所有第一个条件判断为true就不会再执行下一个条件,这就造成短路现象。

第三:条件判断为真都有哪些

  1. 所有的数值都有真假性,除0以外都是真
  2. 字符串 除“”以外都为假,其他都为真
  3. undefine是假
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值