Функция сравнения JS, которая возвращает замыкание - PullRequest
0 голосов
/ 03 декабря 2018

В следующем фрагменте кода показано сравнение нескольких вызовов методов.

console.clear();
const al = (sub, property) => (state) => (state[sub][property]);

const getPatient = (property) => al('patient', property);
const getAppointment = (property) => al('appointment', property);

const state = {
  patient: {name: 'jos', lastname: 'ke'},
  appointment: {date: '01-01-1900'},
};

getPatient('name') === getPatient('lastname'); // should evaluate to false
getPatient('name') === getAppointment('date'); // should evaluate to false
getPatient('name') === getPatient('name'); // should evaluate to true, but is false

Однако я хотел бы, чтобы последнее сравнение привело к true.Как мы можем написать сравнение, чтобы оно оценивалось до true?

1 Ответ

0 голосов
/ 03 декабря 2018

Функции getPatient, getAppointment и getPatient возвращают замыкание;каждый раз, когда вы вызываете эти функции, возвращается новое замыкание, и оно не будет строго эквивалентным (===).

Если вам нужно создать эти замыкания и сравнить их, создавайте замыкания только один рази назначить их переменной:

const getPatientName = getPatient('name');
...