Javascript 如何将一个方法传递给另一个方法而不调用它,并将一个变量对象传递给它?

Javascript 如何将一个方法传递给另一个方法而不调用它,并将一个变量对象传递给它?,javascript,jquery,Javascript,Jquery,对不起,我的最后一个问题。这是一个格式更好的问题 我有一个正在传递方法的方法: method("my_passed_method()") function method(passed_method){ eval(passed_method.replace('()', + '(' + obj + ')' ); } 但这也带来了: 元素列表后的SyntaxError:missing] 我假设这只是一些简单的JSON语法错误。方法的名称,同时是您对该方法对象的引用。括号(可选地在括号之间

对不起,我的最后一个问题。这是一个格式更好的问题

我有一个正在传递方法的方法:

method("my_passed_method()")

function method(passed_method){
    eval(passed_method.replace('()', + '(' + obj + ')' );
} 
但这也带来了:

元素列表后的
SyntaxError:missing]


我假设这只是一些简单的JSON语法错误。

方法的名称,同时是您对该方法对象的引用。括号(可选地在括号之间包含参数)使javascript调用该方法。这意味着您的代码可以重写为:

method(my_passed_method)

function method(passed_method){
    passed_method();
} 
那么,这是怎么回事? 当您传入名称
my_passed_方法
时,javascript引擎将查看该名称映射到什么,并发现它映射到Functiono对象。
然后,在方法的函数调用中,该对象被分配给参数名“passed\u method”。然后,在这个名称后面加上括号将使javascript尝试执行这个对象,这确实是可能的,因为这个对象是一个函数,就像任何其他类型一样,函数就是我们所称的第一类citezens。您可以像对待任何其他值一样,通过将它们分配给变量并传递它们。

方法的名称同时是您对该方法对象的引用。括号(可选地在括号之间包含参数)使javascript调用该方法。这意味着您的代码可以重写为:

method(my_passed_method)

function method(passed_method){
    passed_method();
} 
那么,这是怎么回事? 当您传入名称
my_passed_方法
时,javascript引擎将查看该名称映射到什么,并发现它映射到Functiono对象。
然后,在方法的函数调用中,该对象被分配给参数名“passed\u method”。然后,在这个名称后面加上括号将使javascript尝试执行这个对象,这确实是可能的,因为这个对象是一个函数,就像任何其他类型一样,函数就是我们所称的第一类citezens。您可以像对待任何其他值一样,将它们分配给变量并传递它们。

我想您可能希望这样:

method(my_passed_method)

function method(passed_method){
    passed_method(obj);
} 
请注意,当您调用
方法时,您传递的是函数引用,而不是字符串,并且您没有调用
我的传递的方法(后面没有
()
),您只是引用它

method
中,您可以通过变量
passed\u method
调用函数,因为该变量包含函数引用

在JavaScript中,函数是第一类对象。变量可以引用它们,也可以传递它们,等等

下面是一个完整的、自包含的示例:

// The function we'll pass in
function functionToPass(arg) {
    display("functionToPass's arg is: " + arg);
}

// The function we pass it into
function functionReceivingIt(func) {
    func("foo");
}

// Do it
functionReceivingIt(functionToPass);

|

我想你可能想要这个:

method(my_passed_method)

function method(passed_method){
    passed_method(obj);
} 
请注意,当您调用
方法时,您传递的是函数引用,而不是字符串,并且您没有调用
我的传递的方法(后面没有
()
),您只是引用它

method
中,您可以通过变量
passed\u method
调用函数,因为该变量包含函数引用

在JavaScript中,函数是第一类对象。变量可以引用它们,也可以传递它们,等等

下面是一个完整的、自包含的示例:

// The function we'll pass in
function functionToPass(arg) {
    display("functionToPass's arg is: " + arg);
}

// The function we pass it into
function functionReceivingIt(func) {
    func("foo");
}

// Do it
functionReceivingIt(functionToPass);

|

在Javascript中,函数被视为对象。您可以将它们作为参数传递给其他函数,如下所示

function something(x){
alert(x);
}

function pass(func){
  pass2(func);
}

function pass2(func){
  func("hello");
}

pass(something); //alerts hello
演示:
在Javascript中,函数被视为对象。您可以将它们作为参数传递给其他函数,如下所示

function something(x){
alert(x);
}

function pass(func){
  pass2(func);
}

function pass2(func){
  func("hello");
}

pass(something); //alerts hello
演示:
eval
是邪恶的;或者他们这么说。您不需要以字符串形式传递函数,只需传递函数本身,然后使用或传递参数(或直接调用):

需要
eval
的情况非常罕见


请注意,您的代码将obj评估为javascript,因此输出可能不同。

eval
是邪恶的;或者他们这么说。您不需要以字符串形式传递函数,只需传递函数本身,然后使用或传递参数(或直接调用):

需要
eval
的情况非常罕见


请注意,您的代码将obj评估为javascript,因此输出可能会有所不同。

代码中有一个错误+…这里有几个好答案。在javascript中,方法/函数是可以像任何其他对象一样传递给其他函数的对象。此外,eval是邪恶的。在你的代码中有一个错误+…这里有几个好的答案。在javascript中,方法/函数是可以像任何其他对象一样传递给其他函数的对象。同样,eval是邪恶的。