Following jQuery does not change the value of defaults or options. The returned value is same as empty. empty has been changed and populated with merged data. All is good.
var empty = {}
var defaults = { validate: false, limit: 5, name: "foo" };
var options = { validate: true, name: "bar" };
$.extend(empty, defaults, options);
However I saw someone passing true as the first option.
var defaults = { validate: false, limit: 5, name: "foo" };
var options = { validate: true, name: "bar" };
var output = $.extend(true, defaults, options);
In this case defaults has been changed.options is same and the returned value is same as defaults.
Now try passing false.
var defaults = { validate: false, limit: 5, name: "foo" };
var options = { validate: true, name: "bar" };
var output = $.extend(false, defaults, options);
In this case defaults and options are not changed. So passing true is same as
var defaults = { validate: false, limit: 5, name: "foo" };
var options = { validate: true, name: "bar" };
var output = $.extend(defaults, options);