2016-08-03 5 views
0

Я пытаюсь понять исходный код исходного кода HomeAssistant. Я нашел определение функции, которое я не хорошо понимаю. Я не понимаю, этот синтаксис (model.entity это строка) ...Что означает эта функция JavaScript со стрелкой?

export function createHasDataGetter(model) { 
    return [ 
    ['restApiCache', model.entity], 
    entityMap => !!entityMap, 
    ]; 
} 

Похоже, как л:

return [[string, string], bool]?

Что такое сверхтекучий тип этой функции? Это просто бал? Если да, означает ли это, что entityMap является строковым массивом?

+0

Если вы знаете, что это уже функция стрелки, о чем вас смущает? Похоже, вы уже знаете, что это функция, а не «bool». –

+0

Дубликат: http://stackoverflow.com/questions/24900875/whats-the-meaning-of-an-arrow-formed-from-equals-greater-than-in-javas?noredirect11&lq=1 – Paulpro

+0

'entityMap => !! entityMap' эквивалентно 'function (entityMap) {return !! entityMap; } ' – Paulpro

ответ

3

См "Truthy" on MDN:

В JavaScript truthy значение является значением, которое переводится true при оценке в логическом контексте. Все значения являются правдивыми, если они не определены как фальшивые (то есть, за исключением false, 0, "", null, undefined и NaN).

entityMap => !!entityMapentityMap карты к каноническому логическое значение, true или false. См. Также What is "!!" in C?.

Если entityMap имеет truthy значение, то это !entityMapfalse и !!entityMap является true.

Если entityMap имеет falsy значение, то это !entityMaptrue и !!entityMap является false.

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