匿名函数作为参数

时间:2016-08-06 21:25:21

标签: javascript

function cbTest(name,function(){
    console.log("Hello ",name);
})


cbTest("john");

我收到以下错误。

(function (exports, require, module, __filename, __dirname) {  
     function cbTest(name,function(){
                          ^^^^^^^^
     

SyntaxError:意外的令牌function
  在exports.runInThisContext(vm.js:53:16)
  在Module._compile(module.js:413:25)
  at Object.Module._extensions..js(module.js:452:10)
  在Module.load(module.js:355:32)
  在Function.Module._load(module.js:310:12)
  在Function.Module.runMain(module.js:475:10)
  在启动时(node.js:117:18)
  在node.js:951:3

这段代码出了什么问题?

更新: 我试图让匿名函数作为参数工作,但无论如何,下面应该是这样的。

function getName(name){
    return name;
}

function cbTest(name,cb){
    console.log("hello ",cb(name));
}

cbTest("John",getName);

2 个答案:

答案 0 :(得分:4)

当您声明一个函数时,参数列表只能包含参数的名称(以及ES2015中的扩展运算符...)。你试图在参数列表中声明一个带有实例化函数的函数,这是没有意义的。

当您调用该函数时,匿名函数在参数列表中有意义,但在声明时则不行。

答案 1 :(得分:0)

这段代码没有任何意义

可以是:

function cbTest(name) {
    console.log("Hello ",name);
}

cbTest("john");

function cbTest(name, func) {
    func(name);
}


cbTest("john", function(name){
    console.log("Hello ",name);
});

您无法在函数声明中传递任何内容