私はEloquent JavaScriptからこのコードを理解しようとしています:(!n%2)は(!n%2 == 0)と同じですか?
function unless(test, then) {
if (!test) then();
}
function repeat(times, body) {
for (var i = 0; i < times; i++) body(i);
}
repeat(3, function(n) {
unless(n % 2, function() {
console.log(n, "is even");
});
});
// → 0 is even
// → 2 is even
を私は0,1,2と、次のコード3回のテスト実行し、それが言うことを得る:私はドン何
if (!n%2) function(n) {
console.log(n, "is even");
});
」をどうすれば(!n%2)
から真偽を得ることができますか?
(!n%2)
は(!n%2 == 0)
と同じですか?
私が知っている限り、javascriptは 'null'でも' undefined'でも評価されない限り、式を真に評価します。言い換えると、javascriptでは* valid/known *値を持つものはすべてtrueと評価されます。 – Veverke
@Veverke - ...または空の文字列、または '0'。 –
条件にできるだけ明示してください。 これらの "トリック"は言語に依存しており、どの言語がどのようにそれらを処理するかを記憶するのに十分な時間はありません。 だから(!n%2)あなたが望むものがあっても。それを使用しないでください。 – dustinroepsch