Можно ли передать функцию javascript с параметрами в качестве параметра?
Пример:
$(edit_link).click( changeViewMode( myvar ) );
javascript
Lucia
источник
источник
Ответы:
Используйте «закрытие»:
Это создает анонимную временную оболочку функции, которая знает о параметре и передает его фактической реализации обратного вызова.
источник
this.myFunction = this.myFunction.bind(this)
в своемconstructor
методе. Но, как вы сказали, когда вам нужно передать разные контексты для каждого из них, например, для всех разных строк, по которым вы щелкаете, чтобы открыть страницу с подробностями этой строки, это невозможно избежать.Использование
Function.prototype.bind()
. Цитируя MDN:Он поддерживается всеми основными браузерами, включая IE9 +.
Ваш код должен выглядеть так:
Примечание: я предполагаю, что вы находитесь в глобальном контексте, т.е.
this
переменная естьwindow
; в противном случае используйтеthis
вместоnull
.источник
$.ajax(url).done(handler.bind(this, var1, var2));
Нет, но вы можете передать один без параметров, и сделать это:
Таким образом, вы передаете анонимную функцию без параметров, которая затем вызывает вашу параметризованную функцию с переменной в закрытии
источник
Да, вот так:
источник
Или, если вы используете es6, вы должны быть в состоянии использовать функцию стрелки
источник
Ты можешь сделать это
а потом
Или, если ваш обратный вызов содержит более гибкую логику, вы можете передать объект.
демонстрация
источник
Вот пример, следующий за подходом Фердинанда Бейера:
В этом примере «значение параметра» передается от function1 к function3 через function2 с помощью переноса функции.
источник