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

来源:互联网 发布:北京淘宝摄影工作室 编辑:程序博客网 时间:2024/05/02 06:45

第一: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是假
1 0