为了账号安全,请及时绑定邮箱和手机立即绑定

传递JavaScript函数作为参数

传递JavaScript函数作为参数

不负相思意 2019-07-09 16:38:53
传递JavaScript函数作为参数如何将函数作为参数传递,而不需要在“父”函数中执行或使用eval()?(因为我读到它是不安全的。)我有这个:addContact(entityId, refreshContactList());很管用,但问题是refreshContactList当函数被调用时触发,而不是在函数中使用时触发。我可以用eval()但根据我所读到的,这不是最好的做法。如何在JavaScript中将函数作为参数传递?
查看完整描述

3 回答

?
潇湘沐

TA贡献1816条经验 获得超6个赞

您只需删除括号:

addContact(entityId, refreshContactList);

然后,在不首先执行函数的情况下传递函数。

以下是一个例子:

function addContact(id, refreshCallback) {
    refreshCallback();
    // You can also pass arguments if you need to
    // refreshCallback(id);}function refreshContactList() {
    alert('Hello World');}addContact(1, refreshContactList);


查看完整回答
反对 回复 2019-07-09
?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

如果您想传递一个函数,只需按名称引用它,不要使用括号:

function foo(x) {
    alert(x);}function bar(func) {
    func("Hello World!");}//alerts "Hello World!"bar(foo);

但有时您可能想传递一个函数包括论点,但在调用回调之前不会调用它。为此,在调用它时,只需将其包装在一个匿名函数中,如下所示:

function foo(x) {
   alert(x);}function bar(func) {
   func();}//alerts "Hello World!" (from within bar AFTER being passed)bar(function(){ foo("Hello World!") });

如果您愿意,也可以使用应用函数,并具有第三个参数,即参数数组,如下所示:

function eat(food1, food2){
    alert("I like to eat " + food1 + " and " + food2 );}function myFunc(callback, args){
    //do stuff
    //...
    //execute callback when finished
    callback.apply(this, args);}//alerts "I like to eat pickles and peanut butter"myFunc(eat, ["pickles", "peanut butter"]);


查看完整回答
反对 回复 2019-07-09
  • 3 回答
  • 0 关注
  • 841 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信