Задача JS

Задача JS

@javascript_tests

Ответ:

15 15 15 45

Объяснение:

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

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

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

В четвертый раз мы снова передаем объект value. x.number ранее был изменен на 15, поэтому x.number *= 3 записывает 45

Код для проверки:

const obj = { number: 5 }
const func = (x = { ...obj }) => {
  console.log(x.number *= 3)
}

func()
func()
func(obj)
func(obj)

Report Page