搜索

首页  >  问答  >  正文

在javascript的逻辑运算中,关于--c和c--的一个小问题.

韩老师讲到:

<script type=text/javascript>

var a = 3;

var b = 4;

var c = 1;

if ( a < b && --c && ++a)

{

window.alert("OK")

}

window.alert(c)  // c = 0

window.alert(a)  // a =3

那假若把“--c”变成“c--“”,此时c的值也是0,为什么a的值就变为4了呢?

望各位老师解答一下,谢谢!

正歌正歌2435 天前1702

全部回复(5)我来回复

  • 一切近乎完美

    一切近乎完美2018-03-28 15:24:52

    --c 是先进行运算,后赋值给c ,也就是先斩后奏,当你杀他那时皇上还不知道,还认为他还没死,所以c还是原来的c,后来禀报后才知道,他已经死了,这时c减了一。

    而c-- 是减去后就赋值给c了,当时c就少一,也就是皇上亲自监斩。


    回复
    1
  •  

     2018-03-27 10:57:45

    对于--c时

    a < b   true

    --c   c先自减   c=0    false(0为假 非0为真)   

    a<b&&--c     false然后就会触发&&的“短路”不执行++a

    所有c=0,a=3

    对于c--

    a < b   true

    c--  c先判断真假再自减   所有判断时c=1 为true   然后c自减

    a<b&&--c     true 不会触发&&的"短路"   执行并判断++a

    所以c=0,a=4

    回复
    1
  • 正歌

    谢谢,我想明白了.

    正歌 · 2018-03-27 11:08:21
  • 一生何求

    一生何求2018-03-26 21:13:25

    --c时,表达式左边为false,右边++a不进行运算,所以a的值还是3

    c++时,表达式左边为true,所以右边++a还要进行运算,所以a的值变为4

    回复
    2
  • 正歌

    正歌2018-03-26 19:48:14

    <script type=text/javascript>

    var a = 3;

    var b = 4;

    var c = 1;

    if ( a < b && c-- && ++a);//此时c的值也是0了,应该也为假,++a就应该不进行运算了,那么a的值应该还是3才对,为什么会进行计算了呢?

    {

    window.alert("OK")

    }

    window.alert(c)  // c = 0

    window.alert(a)  // a =3


    回复
    0
  • 取消回复