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++) になります。

2 つ目 e = a > b && c++ > d;

a は b より大きくないため、Javascript は 2 番目の部分を処理しません (その結果に関係なく、e の結果は false になるため)。

したがって、指定した値を考えると、2番目は7で、一番上は8になるはずです

http://jsfiddle.net/ZYVrH/1/例として

于 2012-12-18T07:18:45.803 に答える
0
  1. a <b == trueの場合、javascript VMはブール式の次の部分を計算し、 c変数を増やします。
  2. a> b == false、javascript VMは次の部分を計算しません。これは、論理式の最初の引数がfalseの場合に計算する必要がないためです。
于 2012-12-18T07:10:38.143 に答える
0

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

このような条件 - (exp1 && exp2)、exp1 が false の場合、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 に答える