Скобка сразу после оператора return

#javascript

#javascript

Вопрос:

 function transpose(data) {
    return data.replace(/[abc]/ig, function(d) {
        return {
            'a': '1',
            'b': '2'
        }[d];
    });
}
 

У меня возникли небольшие проблемы с пониманием возвращаемой части этой функции.

Если я правильно это понимаю, return возвращает литерал объекта. (Пожалуйста, поправьте меня, если я ошибаюсь.)

Вызывается параметр [d] для доступа к свойству литерала объекта? (Это правильно?)

Например:

 var x = {'a': '1', 'b': '2'}
return x['a']
 

Комментарии:

1. да, ваше понимание верно

2. и да, никто не должен писать подобные функции из-за того, насколько неоднозначно это выглядит

Ответ №1:

Да, просто посмотрите на основы доступа к свойству объекта. У вас есть 2 способа (не включая деструкцию объекта ES6):

  1. object.property
  2. object[‘свойство’]

Итак, в этом случае он использует метод доступа к свойству в квадратных скобках [] .

Функция возвращает объект и обращается к свойству, переданному в качестве общего параметра.