Задача №72

Задача №72


Что будет выведено в консоль?

  • A: 204080160
  • B: 20402040
  • C: 20202040
  • D: NaNNaN2040

Правильный ответ:

В ES6 мы можем инициализировать параметры значением по умолчанию. Значением параметра будет значение по умолчанию, если никакое другое значение не было передано функции, или если значение параметра равно "undefined". В этом случае мы распространяем свойства объекта value на новый объект, поэтому значение x по умолчанию равно {number: 10}.

Аргумент по умолчанию реализуется в момент call time! Каждый раз, когда мы вызываем функцию, создается new объект. Мы вызываем функцию multiply первые два раза, не передавая значение: x имеет значение по умолчанию {number: 10}. Затем мы записываем умноженное значение этого числа, которое равно 20.

В третий раз, когда мы вызываем multiply, мы передаем аргумент: объект с именем value. Оператор *= на самом деле является сокращением для x.number = x.number * 2: мы изменяем значение x.number и записываем умноженное значение 20.

В четвертый раз мы снова передаем объект valuex.number ранее был изменен на 20, поэтому x.number * = 2 записывает 40.

Ответ С

Report Page