2015-02-12 2 views
3

Почему метод lodash result не возвращает значение по умолчанию в этом случае?Lodash _.result() значение по умолчанию

Аргументы объект (объект): объект для запроса.

ключ (строка): Ключ к разрешению объекта.

[defaultValue] (*): Возвращаемое значение, если значение свойства разрешается до неопределенного.

var result = _.result({ foo: 1 }, 'bar', 'default'); 

console.log(typeof _.result({ foo: 1 }, 'bar') === 'undefined') // true 

console.log(result); // expected: 'default' 

http://jsfiddle.net/dbvs5ney/

+0

Вы пробовали ' _.constant ('default') ', как у них есть в примере? – Andy

+0

@ Энди Нет, не знаю. Я использую пример «занят» чуть выше, как вы можете видеть. – Johan

+1

Я могу заставить его работать в моем браузере с вашим кодом (эта скрипка по какой-то причине не работает). – Andy

ответ

5

Кажется, что параметр default был добавлен только в версии 3.0.0
Сравните _.result реализации:
3.0.0lodash.js

function result(object, key, defaultValue) { 
    var value = object == null ? undefined : object[key]; 
    if (typeof value == 'undefined') { 
    value = defaultValue; 
    } 
    return isFunction(value) ? value.call(object) : value; 
} 

И 2.2.1lodash.js:

+0

Aah, я вижу. Спасибо – Johan

+0

Отличный поиск. Но нет необходимости проверять исходный код в этих случаях. Lodash также имеет документацию по старым версиям (просто используйте раскрывающийся список с номером версии в верхней части документации). Вот документы [версии 2.4.2 '_.result'] (https://github.com/lodash/lodash/blob/2.4.2/doc/README.md#_resultobject-key), которая не показывает 'defaultValue'. –

2

К сожалению, я не могу добавить комментарий. Попробуйте более новую версию lodash. Вам особенно нужна версия 2.2.1?

Смежные вопросы