0

我们的导师在测验中给了我们以下代码,我不知道发生了什么。到目前为止还没有收到她的回音,有人可以对此有所了解吗?到目前为止,我在编程学习中还没有见过这样的表达方式

var a = 3;
var b = 5;
var c = 7;
var d = 8;
var e;

e = a < b && c++ > d;

document.write(c);

答案是 7

e = a > b && c++ > d;

document.write(c);

答案是 8

4

3 回答 3

1
var a = 3;
var b = 5;
var c = 7;
var d = 8;
var e;

e = a < b && c++ > d;

document.write(c);

重要的部分是 c=7

e = a < b && c++ > d;

这使得 c=8 (c++)

第二个 e = a > b && c++ > d;

因为 a 不大于 b,所以 Javascript 无法解决第二部分(因为无论其结果如何,e 的结果都是错误的)

所以第二个应该是 7 并且顶部应该是 8 给定你给它的值

http://jsfiddle.net/ZYVrH/1/为例

于 2012-12-18T07:18:45.803 回答
0

e = a > b && c++ > d;

像这样的条件 - (exp1 && exp2),当 exp1 结果为假时,永远不会计算 exp2。所以在上面的表达式中,你有 a > b && c++ > d。由于 a 不大于 b 因此,即使有 ++ 运算符, c 也永远不会递增。所以当你打印 c 时,它是 7。

鉴于,e = a < b && c++ > d; 由于 a 小于 b,计算继续计算 c++ > d,结果 c 递增,其值为 8。

于 2012-12-18T07:18:15.717 回答
0
  1. a < b == true,javascript VM 计算布尔表达式的下一部分并增加c变量。
  2. a > b == false,javascript VM不计算下一部分,因为当逻辑表达式的第一个参数为false时不需要这样做。
于 2012-12-18T07:10:38.143 回答