OldSchool1705
@OldSchool1705
I want to become a programmer

Кто может помочь понять код или дать ссылку где про это почитать?

Поделитесь информацией или дайте ссылку на изучение, спасибо за понимания.
const myIfElse = (condition, successCallback, failureCallback) => {
  const obj = {
    true: successCallback,
    false: failureCallback,
  };

не понимаю почему здесь такая структура
  return obj[condition]();
};
myIfElse(
  true,
  () => console.log(123),
  () => console.log(2)
); // 123
myIfElse(
  false,
  () => console.log(1),
  () => console.log(2)
); // 2
console.log("asdasd");
  • Вопрос задан
  • 74 просмотра
Решения вопроса 3
sergiks
@sergiks Куратор тега JavaScript
♬♬
в квадратных скобках — переменная с именем свойства
const obj = { a: "AAA", b: "BBB", "outer space": "UFO" };

let name = "a";
console.log( obj[name] ); // "AAA"

name = "outer space";
console.log( obj[name] ); // "UFO"

Поскольку ключами объекта могут быть только строки (и символы),
то Булевы true или false переводятся в строки "true" и "false".
В объекте с двумя свойствами, в которых лежат функции: { "true": function1, "false": function2 } вызывается одна из этих двух функций, в зависимости от значения true или false.
Ответ написан
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
obj - это объект.
К полям объекта можно обращаться через точку или квадратные скобки

например

const obj = { prop: 123 }

// Это два одинаковых выражения
obj.prop // 123
obj['prop'] // 123

Строка 'prop' тоже может быть переменной
const obj = { prop: 123 }
const name = 'prop';
obj[name] // 123


Круглые скобки - это вызов функции.
Функция может содержаться в переменной

const my_func = function() {}
// чтобы ее вызвать
my_func();


И все это может комбинироваться.
Функция может быть частью объекта
const obj = {
  my_func: function(){}
}

Может передаваться в объект через переменную
const my_other_func = function() {}
const obj = {
  my_func: my_other_func
}

И может быть вызвана
при обращении к свойству объекта через точку
obj.my_func()
при обращении к свойству объекта через квадратные скобки
obj['my_func']()
// или
const name = 'my_func';
obj[name]()
Ответ написан
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
return obj[condition]();
этот код идентичен  при condition === true
  return obj.true();
  return obj[condition]();


То есть вы можете обращается к полям обьекта как к элементам массива.
Плюс идет преобразование булевого значения в строковое (хотя я тут не уверен)

Ну и еще один способ https://developer.mozilla.org/ru/docs/Web/JavaScri...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы