Интересная задача js [дубликат]

233
22 апреля 2018, 22:36

На данный вопрос уже ответили:

  • Почему асинхронная функция внутри цикла выполняет последнюю итерацию много раз? 2 ответа

Функция использует деструктурирование для разбора аргументов. Но у нее есть проблема: вылетает ошибка, когда передается опциональный объект без свойства enable. Поскольку все параметры имеют значения по умолчанию, хотелось бы чтобы функция не возвращала ошибку. Существует ли простой способ решить эту проблему?

function go(options) {
  let {
    speed = 4,
    enable: {hyperdrive = false,
    frobnifier = true}
  } = options;
  console.log(
    "speed=", speed,
    "hyperdrive:", hyperdrive,
    "frobnifier:", frobnifier
  );
}
go({speed: 5});

2) Типичная ошибка в JavaScript. Мы создаем ряд функций в цикле и ссылаемся на внешнюю переменную из этих функций. Все они будут ссылаться на одну и ту же переменную, которая в конечном итоге будет увеличена до 10. В данном примере callbacks [2] не выводит в консоль 2. Выводится 10, как и во всех функциях в массиве. Какое решение для таких ситуаций в ES5?

var callbacks = [];
for (var i = 0; i < 10; i++) {
  callbacks.push(function() { console.log(i) })
}
callbacks[2]();
Answer 1

1) Все по аналогии с присвоением дефолтных значений:

function go(options) { 
  let { 
    speed = 4, 
    enable: { 
      hyperdrive = false, 
      frobnifier = true 
    } = {} 
  } = options; 
  console.log( 
    "speed=", speed, 
    "hyperdrive:", hyperdrive, 
    "frobnifier:", frobnifier 
  ); 
} 
go({speed: 5});

2) Как вариант, передать в контекст i:

var callbacks = []; 
for (var i = 0; i < 10; i++) { 
  (function( index ) { 
    callbacks.push(function() { console.log(index) }) 
  })(i); 
} 
callbacks[2]();

READ ALSO
Зачем нужен веб-сервер для pixijs

Зачем нужен веб-сервер для pixijs

Начал читать документацию клик и не смог понятьЗачем же обычному js фреймворку нужен веб-сервер

190
Избавиться от циклов if

Избавиться от циклов if

Проверяю мой класс games на название игрыПроверку делаю циклом if, но игр будет около 30 и что 30 циклов if делать? Не правильно же

210
Использование строк-шаблонов

Использование строк-шаблонов

Как использовать строку-шаблон и нижеприведенные данные, чтобы получить вот такой результат:

201
Нужна помощь в js каррирование [дубликат]

Нужна помощь в js каррирование [дубликат]

На данный вопрос уже ответили:

300