Почему нам нужно создавать новую функцию вместо использования существующей функции при вызове ('change', new func () {myfunc ()})? - PullRequest
0 голосов
/ 31 марта 2019

У меня вопрос новичка.

В jQuery, почему, когда мы вызываем:

$('#input').on('change', myfunction());

Функция myfunction () не вызывается каждый раз, когда поле «input»изменяется, но только при первой загрузке скрипта?

И этот код работает:

$('#input').on('change', function() { myfunction(); });

Я ожидал того же результата ...

Спасибо за любую помощь.

Ответы [ 2 ]

0 голосов
/ 31 марта 2019

Измените

$('#input').on('change', myfunction());

на

$('#input').on('change', myfunction);

, и это тоже будет работать.myfunction - это функция, myfunction() - это результат из myfunction, который вызывается.

0 голосов
/ 31 марта 2019

В первом примере вы передаете возвращаемое значение из myfunction, которое не является function.Во втором примере вы передаете переменную function.

Ниже приведен фрагмент, чтобы увидеть разницу

function myfunction(){
  return 'x'
}
console.log(typeof myfunction()) //function

// It means that 'myfunction()' doesnot refer to function but its a 'string' i.e 'x'.

function wrapper(){
  myfunction();
}

console.log(typeof wrapper) //function
...