2016-08-06 9 views
-1
function cbTest(name,function(){ 
    console.log("Hello ",name); 
}) 


cbTest("john"); 

次のエラーが発生しています。パラメータとしての匿名関数

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

SyntaxError: Unexpected token function
  at exports.runInThisContext (vm.js:53:16)
  at Module._compile (module.js:413:25)
  at Object.Module._extensions..js (module.js:452:10)
  at Module.load (module.js:355:32)
  at Function.Module._load (module.js:310:12)
  at Function.Module.runMain (module.js:475:10)
  at startup (node.js:117:18)
  at node.js:951:3

このコードで何が問題になっていますか?

更新: 私は無名関数をパラメータとして使用しようとしましたが、とにかく、以下の方法が必要です。あなたが関数を宣言しているとき

function getName(name){ 
    return name; 
} 

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

cbTest("John",getName); 
+4

何このコードをすべきあなたの意見では?あなたは関数を宣言しており、パラメータリストの代わりにいくつかの関数を入力します。 – Adassko

+0

関数は* parameters *にすることはできませんが、* arguments *にすることができます。 –

答えて

4

、パラメータリストはパラメータのみの名前(ES2015でも、プラススプレッドオペレータ...)で構成することができます。インスタンス化された関数をパラメータリストに宣言しようとしていますが、これは意味をなさないものです。あなたはにそれを宣言するいるときあなたは機能を呼び出しますが、いないとき

無名関数はパラメータリストで意味をなします。

0

このコードはどんな意味がありません

これは、次のいずれかとなります。

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

cbTest("john"); 

または

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


cbTest("john", function(name){ 
    console.log("Hello ",name); 
}); 
あなたは関数宣言に何かを渡すことはできません

+0

2番目の例は 'func(name)'ではなく 'func( 'foo')'でなければなりません。 – gcampbell

+0

2番目の例が動作します! "こんにちはジョン"を印刷します。 @gcampbellも同じです。 "Hello foo"を表示します。 ありがとう! – naga