Skip to content

Commit bd3965d

Browse files
Move function declarations outside of conditionals in the name of spec compliance.
1 parent c312cbc commit bd3965d

File tree

1 file changed

+64
-62
lines changed

1 file changed

+64
-62
lines changed

src/prototype/lang/array.js

Lines changed: 64 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -500,91 +500,93 @@ Array.from = $A;
500500
};
501501
}
502502

503+
function map(iterator) {
504+
iterator = iterator || Prototype.K;
505+
var results = [], context = arguments[1], n = 0;
506+
507+
for (var i = 0, length = this.length; i < length; i++) {
508+
if (i in this) {
509+
results[n] = iterator.call(context, this[i], i, this);
510+
}
511+
n++;
512+
}
513+
results.length = n;
514+
return results;
515+
}
516+
503517
if (arrayProto.map) {
504-
var map = wrapNative(Array.prototype.map);
505-
} else {
506-
function map(iterator) {
507-
iterator = iterator || Prototype.K;
508-
var results = [], context = arguments[1], n = 0;
509-
510-
for (var i = 0, length = this.length; i < length; i++) {
511-
if (i in this) {
512-
results[n] = iterator.call(context, this[i], i, this);
518+
map = wrapNative(Array.prototype.map);
519+
}
520+
521+
function filter(iterator) {
522+
if (!Object.isFunction(iterator))
523+
throw new TypeError();
524+
var results = [], context = arguments[1], value;
525+
526+
for (var i = 0, length = this.length; i < length; i++) {
527+
if (i in this) {
528+
value = this[i];
529+
if (iterator.call(context, value, i, this)) {
530+
results.push(value);
513531
}
514-
n++;
515532
}
516-
results.length = n;
517-
return results;
518533
}
534+
return results;
519535
}
520-
536+
521537
if (arrayProto.filter) {
522538
// `Array#filter` requires an iterator by nature, so we don't need to
523539
// wrap it.
524-
var filter = Array.prototype.filter;
525-
} else {
526-
function filter(iterator) {
527-
if (!Object.isFunction(iterator))
528-
throw new TypeError();
529-
var results = [], context = arguments[1], value;
530-
531-
for (var i = 0, length = this.length; i < length; i++) {
532-
if (i in this) {
533-
value = this[i];
534-
if (iterator.call(context, value, i, this)) {
535-
results.push(value);
536-
}
537-
}
540+
filter = Array.prototype.filter;
541+
}
542+
543+
function some(iterator) {
544+
iterator = iterator || Prototype.K;
545+
var context = arguments[1];
546+
547+
for (var i = 0, length = this.length; i < length; i++) {
548+
if (i in this && iterator.call(context, this[i], i, this)) {
549+
return true;
538550
}
539-
return results;
540551
}
552+
553+
return false;
541554
}
542555

543556
if (arrayProto.some) {
544557
var some = wrapNative(Array.prototype.some);
545-
} else {
546-
function some(iterator) {
547-
iterator = iterator || Prototype.K;
548-
var context = arguments[1];
549-
550-
for (var i = 0, length = this.length; i < length; i++) {
551-
if (i in this && iterator.call(context, this[i], i, this)) {
552-
return true;
553-
}
558+
}
559+
560+
function every(iterator) {
561+
iterator = iterator || Prototype.K;
562+
var context = arguments[1];
563+
564+
for (var i = 0, length = this.length; i < length; i++) {
565+
if (i in this && !iterator.call(context, this[i], i, this)) {
566+
return false;
554567
}
555-
556-
return false;
557568
}
569+
570+
return true;
558571
}
559572

560573
if (arrayProto.every) {
561574
var every = wrapNative(Array.prototype.every);
562-
} else {
563-
function every(iterator) {
564-
iterator = iterator || Prototype.K;
565-
var context = arguments[1];
566-
567-
for (var i = 0, length = this.length; i < length; i++) {
568-
if (i in this && !iterator.call(context, this[i], i, this)) {
569-
return false;
570-
}
571-
}
572-
573-
return true;
574-
}
575575
}
576576

577577
// Prototype's `Array#inject` behaves similarly to ES5's `Array#reduce`.
578-
if (arrayProto.reduce) {
579-
var _reduce = arrayProto.reduce;
580-
function inject(memo, iterator) {
581-
iterator = iterator || Prototype.K;
582-
var context = arguments[2];
583-
// The iterator must be bound, as `Array#reduce` always executes the
584-
// iterator in the global context.
585-
return _reduce.call(this, iterator.bind(context), memo, context);
586-
}
587-
} else {
578+
var _reduce = arrayProto.reduce;
579+
function inject(memo, iterator) {
580+
iterator = iterator || Prototype.K;
581+
var context = arguments[2];
582+
// The iterator must be bound, as `Array#reduce` always executes the
583+
// iterator in the global context.
584+
return _reduce.call(this, iterator.bind(context), memo, context);
585+
}
586+
587+
// Piggyback on `Array#reduce` if it exists; otherwise fall back to the
588+
// standard `Enumerable.inject`.
589+
if (!arrayProto.reduce) {
588590
var inject = Enumerable.inject;
589591
}
590592

0 commit comments

Comments
 (0)