ハン先生はこう言いました:
<script type=text/javascript>
var a = 3;
var b = 4;
--c が最初に計算され、次に c に割り当てられます。つまり、最初に殺し、後で報告します。皇帝はまだ知らず、まだ死んでいないと考えているため、c は元の c のままです。報告して初めて自分がすでに死んでいることを知り、この時点でcが1減りました。
そして、c--は減算後のcに割り当てられます。このとき、cは1つ減っていました。つまり、皇帝が個人的に処刑を監督したことになります。
--c の場合
a < b true
--c c は最初に c=0 false (0 は false、0 以外は true)
a<b&&--c false の場合、&& がトリガーされます "Short回路」は実行されません ++a
all c=0, a=3
for c--
c-- cは最初にtrueとfalseを判定し、それからそれ自体をデクリメントします、c=1すべての判断が真であるため、 c はデクリメントします
a
したがって、c=0、a=4
--C++の場合、式の左辺はfalseで、右辺の++aは演算を実行しないため、aの値は3のままです
C++の場合、式の左辺はtrue、したがって、右辺の ++a はまだ演算を実行する必要があるため、a の値は 4 になります
var c = 1;
if ( a < b && c-- && ++a);/ /このとき、c の値も 0 であり、これも false であるはずです。++a は計算されないはずなので、a の値は 3 のままであるはずです。なぜ計算されるのでしょうか。
{
window.alert("OK")
}
window.alert(c) // c = 0
window.alert(a) // a =3
--c が最初に計算され、次に c に割り当てられます。つまり、最初に殺し、後で報告します。皇帝はまだ知らず、まだ死んでいないと考えているため、c は元の c のままです。報告して初めて自分がすでに死んでいることを知り、この時点でcが1減りました。
そして、c--は減算後のcに割り当てられます。このとき、cは1つ減っていました。つまり、皇帝が個人的に処刑を監督したことになります。
--c の場合
a < b true
--c c は最初に c=0 false (0 は false、0 以外は true)
a<b&&--c false の場合、&& がトリガーされます "Short回路」は実行されません ++a
all c=0, a=3
for c--
a < b true
c-- cは最初にtrueとfalseを判定し、それからそれ自体をデクリメントします、c=1すべての判断が真であるため、 c はデクリメントします
a
したがって、c=0、a=4
--C++の場合、式の左辺はfalseで、右辺の++aは演算を実行しないため、aの値は3のままです
C++の場合、式の左辺はtrue、したがって、右辺の ++a はまだ演算を実行する必要があるため、a の値は 4 になります
<script type=text/javascript>
var a = 3;
var b = 4;
var c = 1;
if ( a < b && c-- && ++a);/ /このとき、c の値も 0 であり、これも false であるはずです。++a は計算されないはずなので、a の値は 3 のままであるはずです。なぜ計算されるのでしょうか。
{
window.alert("OK")
}
window.alert(c) // c = 0
window.alert(a) // a =3