Проблема с преобразованием объекта в примитивное значение. При использовании метода valueOf

98
05 мая 2021, 20:20

const func = (arg) => { 
  func.valueOf = () => 0; 
 
  return func;  
}; 
 
func() + 1; 
// Результат => 1

Первый вариант отрабатывает правильно, а второй не правильно. В чем ошибка?

const func = (arg) => { 
  const innerFunc = (arg1) => { 
    innerFunc.valueOf = () => 0; 
    return func; 
  }; 
  return innerFunc;  
}; 
 
func() + 1; 
// Результат => '(arg1) => {\n    inner.valueOf = () => 0;\n    return func;\n  }1'

Answer 1

Во вором варианте вызовите func()() + 1, ведь там функцияvalueOf определена не у функции, которая возвращается при вызове func, а у функции, которая возвращается при вызове innerFunc, которая в свою очередь возвращается при вызове func.

READ ALSO
Нужна помощь с JavaScript. Не понимаю объектов. ООП

Нужна помощь с JavaScript. Не понимаю объектов. ООП

Изучаю JavaScript (Чистый)Есть следующий код, описывающий класс PersonFactory, а так же есть конструктор:

105
Как написать JOIN?

Как написать JOIN?

Подскажите пожалуйста как решить следующую задачуЯ хочу отобразить список всех пользователей, при этом напротив тех пользователей на которых...

90
Почему не работает тест?

Почему не работает тест?

При нажатии на кнопку "Ответ" в данном тесте: 1) проверяется соответствие radiochecked

120