在js中,function函数可以通过几种不同的方式来调用。
// 直接调用
function foo() {
console.log('foo');
}
foo(); // 输出 'foo'
上面的代码中,直接调用函数foo,即可获得函数的返回值。
// 作为函数参数
function foo() {
console.log('foo');
}
function bar(fn) {
fn(); // 调用参数fn
}
bar(foo); // 输出 'foo'
上面的代码中,函数foo被作为参数传入函数bar,bar函数中可以直接调用传入的函数参数。
// 作为返回值
function foo() {
console.log('foo');
}
function bar() {
return foo;
}
var fn = bar();
fn(); // 输出 'foo'
上面的代码中,函数foo被作为返回值返回,可以通过变量fn来调用。
// 作为对象的方法
var obj = {
foo: function() {
console.log('foo');
}
};
obj.foo(); // 输出 'foo'
上面的代码中,函数foo被作为对象obj的方法,可以通过obj.foo()来调用。
// 作为构造函数
function Foo() {
this.foo = function() {
console.log('foo');
}
}
var f = new Foo();
f.foo(); // 输出 'foo'
上面的代码中,函数Foo被作为构造函数,可以通过new Foo()来调用,返回一个Foo的实例,通过实例的foo方法来调用函数。
// 作为闭包
function foo() {
var bar = function() {
console.log('bar');
}
return bar;
}
var fn = foo();
fn(); // 输出 'bar'
上面的代码中,函数foo返回一个函数bar,bar函数可以通过变量fn来调用。
以上就是,可以根据不同的需求来选择最合适的调用方式。