Skip to content

Commit 6b29e98

Browse files
committed
Some simple code cleanups
- Moves createAssigner to just above where it's needed. - Use function expressions, not declarations.
1 parent 0fa1071 commit 6b29e98

File tree

1 file changed

+28
-28
lines changed

1 file changed

+28
-28
lines changed

underscore.js

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -94,24 +94,6 @@
9494
return cb(value, context, Infinity);
9595
};
9696

97-
// An internal function for creating assigner functions.
98-
var createAssigner = function(keysFunc, undefinedOnly) {
99-
return function(obj) {
100-
var length = arguments.length;
101-
if (length < 2 || obj == null) return obj;
102-
for (var index = 1; index < length; index++) {
103-
var source = arguments[index],
104-
keys = keysFunc(source),
105-
l = keys.length;
106-
for (var i = 0; i < l; i++) {
107-
var key = keys[i];
108-
if (!undefinedOnly || obj[key] === void 0) obj[key] = source[key];
109-
}
110-
}
111-
return obj;
112-
};
113-
};
114-
11597
// An internal function for creating a new object that inherits from another.
11698
var baseCreate = function(prototype) {
11799
if (!_.isObject(prototype)) return {};
@@ -175,16 +157,16 @@
175157
};
176158

177159
// Create a reducing function iterating left or right.
178-
function createReduce(dir) {
160+
var createReduce = function(dir) {
179161
// Optimized iterator function as using arguments.length
180162
// in the main function will deoptimize the, see #1991.
181-
function iterator(obj, iteratee, memo, keys, index, length) {
163+
var iterator = function(obj, iteratee, memo, keys, index, length) {
182164
for (; index >= 0 && index < length; index += dir) {
183165
var currentKey = keys ? keys[index] : index;
184166
memo = iteratee(memo, obj[currentKey], currentKey, obj);
185167
}
186168
return memo;
187-
}
169+
};
188170

189171
return function(obj, iteratee, memo, context) {
190172
iteratee = optimizeCb(iteratee, context, 4);
@@ -198,7 +180,7 @@
198180
}
199181
return iterator(obj, iteratee, memo, keys, index, length);
200182
};
201-
}
183+
};
202184

203185
// **Reduce** builds up a single result from a list of values, aka `inject`,
204186
// or `foldl`.
@@ -606,7 +588,7 @@
606588
};
607589

608590
// Generator function to create the findIndex and findLastIndex functions
609-
function createPredicateIndexFinder(dir) {
591+
var createPredicateIndexFinder = function(dir) {
610592
return function(array, predicate, context) {
611593
predicate = cb(predicate, context);
612594
var length = getLength(array);
@@ -616,7 +598,7 @@
616598
}
617599
return -1;
618600
};
619-
}
601+
};
620602

621603
// Returns the first index on an array-like that passes a predicate test
622604
_.findIndex = createPredicateIndexFinder(1);
@@ -636,7 +618,7 @@
636618
};
637619

638620
// Generator function to create the indexOf and lastIndexOf functions
639-
function createIndexFinder(dir, predicateFind, sortedIndex) {
621+
var createIndexFinder = function(dir, predicateFind, sortedIndex) {
640622
return function(array, item, idx) {
641623
var i = 0, length = getLength(array);
642624
if (typeof idx == 'number') {
@@ -658,7 +640,7 @@
658640
}
659641
return -1;
660642
};
661-
}
643+
};
662644

663645
// Return the position of the first occurrence of an item in an array,
664646
// or -1 if the item is not included in the array.
@@ -901,7 +883,7 @@
901883
var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',
902884
'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];
903885

904-
function collectNonEnumProps(obj, keys) {
886+
var collectNonEnumProps = function(obj, keys) {
905887
var nonEnumIdx = nonEnumerableProps.length;
906888
var constructor = obj.constructor;
907889
var proto = (_.isFunction(constructor) && constructor.prototype) || ObjProto;
@@ -916,7 +898,7 @@
916898
keys.push(prop);
917899
}
918900
}
919-
}
901+
};
920902

921903
// Retrieve the names of an object's own properties.
922904
// Delegates to **ECMAScript 5**'s native `Object.keys`
@@ -997,6 +979,24 @@
997979
return names.sort();
998980
};
999981

982+
// An internal function for creating assigner functions.
983+
var createAssigner = function(keysFunc, undefinedOnly) {
984+
return function(obj) {
985+
var length = arguments.length;
986+
if (length < 2 || obj == null) return obj;
987+
for (var index = 1; index < length; index++) {
988+
var source = arguments[index],
989+
keys = keysFunc(source),
990+
l = keys.length;
991+
for (var i = 0; i < l; i++) {
992+
var key = keys[i];
993+
if (!undefinedOnly || obj[key] === void 0) obj[key] = source[key];
994+
}
995+
}
996+
return obj;
997+
};
998+
};
999+
10001000
// Extend a given object with all the properties in passed-in object(s).
10011001
_.extend = createAssigner(_.allKeys);
10021002

0 commit comments

Comments
 (0)