2

underscore.jsからのこのステートメントの行を説明してもらえますか:

_.every = _.all = function(obj, iterator, context) {
    var result = true;

    each(obj, function(value, index, list) {
--->  if (!(result = result && iterator.call(context, value, index, list)))
          return breaker;
    });

    return !!result;
};

(result = result && iterator.call...私はこの行を理解していませんresultiterator.call(...)作成者はブール値に変換したいだけですか? たとえば、彼がやりたいことはただ

if (!(result = !!iterator.call(context, value, index, list))) // "!!" used
4

1 に答える 1

0

あなたのステートメントとの違いは、元のコードでは、少なくとも 1 回の反復で返されるとすぐに、あなたのステートメントがresult最後の値の値に与えられることです。!!iterator.callresultfalseiterator.callfalse

元のコードresultでは、すべての反復で true が返されたtrue場合のみです。iterator.call

于 2013-09-07T11:58:12.773 に答える