Avoid returning assignDefaults if no object is provided to _.defaults.

This commit is contained in:
John-David Dalton
2014-03-15 00:33:55 -07:00
parent 65f125d998
commit 0a2dd2a330
2 changed files with 11 additions and 4 deletions

View File

@@ -5440,11 +5440,11 @@
* // => { 'name': 'barney', 'employer': 'slate' }
*/
function assign(object, source, guard) {
if (!object) {
var args = arguments;
if (!object || args.length < 2) {
return object;
}
var args = arguments,
argsIndex = 0,
var argsIndex = 0,
argsLength = args.length,
type = typeof guard;
@@ -5636,7 +5636,10 @@
* _.defaults({ 'name': 'barney' }, { 'name': 'fred', 'employer': 'slate' });
* // => { 'name': 'barney', 'employer': 'slate' }
*/
function defaults() {
function defaults(object) {
if (!object || arguments.length < 2) {
return object;
}
var args = slice(arguments);
args.push(assignDefaults);
return assign.apply(null, args);

View File

@@ -2983,6 +2983,10 @@
_.forEach(['assign', 'defaults', 'merge'], function(methodName) {
var func = _[methodName];
test('`_.' + methodName + '` should return `undefined` when no destination object is provided', 1, function() {
strictEqual(func(), undefined);
});
test('`_.' + methodName + '` should return the existing wrapper when chaining', 1, function() {
if (!isNpm) {
var wrapper = _({ 'a': 1 });