ハン先生はこう言いました:
<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 = 0window.alert(a) // a =3「--c」を変更した場合このとき、c の値も 0 になります。a の値が 4 になるのはなぜですか? 先生方全員に答えていただければ幸いです。ありがとうございます!
--c が最初に計(jì)算され、次に c に割り當(dāng)てられます。つまり、最初に殺し、後で報(bào)告します?;实郅悉蓼乐椁?、まだ死んでいないと考えているため、c は元の c のままです。報(bào)告して初めて自分がすでに死んでいることを知り、この時(shí)點(diǎn)でcが1減りました。
そして、c--は減算後のcに割り當(dāng)てられます。このとき、cは1つ減っていました。つまり、皇帝が個(gè)人的に処刑を監(jiān)督したことになります。
--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は演算を?qū)g行しないため、aの値は3のままです
C++の場合、式の左辺はtrue、したがって、右辺の ++a はまだ演算を?qū)g行する必要があるため、a の値は 4 になります
<script type=text/javascript>
var a = 3;
var b = 4;
var c = 1;
if ( a < b && c-- && ++a);/ /このとき、c の値も 0 であり、これも false であるはずです。++a は計(jì)算されないはずなので、a の値は 3 のままであるはずです。なぜ計(jì)算されるのでしょうか。
{
window.alert("OK")
}
window.alert(c) // c = 0
window.alert(a) // a =3