From my understanding of the [Lodash documentation](http://lodash.com/docs#defaults), `_.defaults(obj1, obj2)`  will assign each `prop` of `obj2` to `obj1` only if `obj1.prop` resolves to `undefined`, and as `_.defaults` is also not recursive, if there is a `options.globals` object property, it will always replace the one in `.jshintrc` instead of the result being `_.defaults(options.globals, rc.globals)`.

Which finally brings me to this: If the desired behaviour is to recursively merge `options` into `rc`, why not doing this instead:
`grunt.util._.merge(rc, options)`

Cheers,
Salim