Задача 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)