功能与功能()的不同之处是什么?

时间:2016-06-01 14:43:20

标签: javascript node.js

也许我的问题对你来说显得很愚蠢......不幸的是,我没有在关于回调的教程中找到答案。请帮帮我。

我想弄清楚

之间有什么不同

1。)

function name ( input, cb )

2。)

function name ( input, cb() )

通过

cb() {
...
}

在示例2中生成括号的内容是什么?)?我猜,它与synchrone / asynchrone javascript有关。请帮我理解后果。

这是我的工作代码:

if(T.get('statuses/show/' + tweet.id_str, { include_my_retweet:true }, iRT) === true){ //iRT = I have retweeted
   console.log('Not retweeted. ');
}

这是我的工作代码:

if(T.get('statuses/show/' + tweet.id_str, { include_my_retweet:true }, iRT()) === true){  //iRT = I have retweeted
console.log('Not retweeted. ');
}

这是我的回归功能:

return( noRetweet() );  


function noRetweet() {
  return true;
}    

2 个答案:

答案 0 :(得分:1)

目前尚不清楚你要做的是函数调用还是函数定义。

函数调用

如果是函数调用,则function关键字不应该在此处。函数f的调用方式如下:f(arg);

在第一种情况下,函数name将函数cb作为第二个参数。然后它可以随时回调这个函数 - 或者随心所欲地做任何事情。

在第二种情况下,您首先直接调用cb()用于什么,您也可以使用参数调用它,即name(input, cb(arg)))以及此结果call(不是函数本身)作为第二个参数传递给name

name(input, cb());

大致相当于:

var tmpResult = cb();
name(input, tmpResult);

功能定义

如果是函数定义,则缺少函数体。函数定义如下。

 function f(arg){
   // What happens when the function is called.
 }

在这种情况下,第二种情况无效。这是一个语法错误,并不意味着什么。

修改

在您添加问题后,您的if应该可以正常使用。如果true实际上取决于T.get函数的结果。正如我之前所说的,在第一种情况下,你给T.get函数iRT,在第二种情况下给出结果。你应该看看正是期待T.get并给它提供正确的参数(我怀疑它是iRT的结果,但不知道这些函数的作用,我们只能猜测)。

答案 1 :(得分:0)

一般的想法是当你调用你的函数时,你的参数可以是他们想要的任何东西,只要它们产生结果。但是,在定义函数时,参数必须是变量。

下面,您可以看到我使用单独的参数定义每个函数,但是当我调用它时,我可以使用add()作为参数,因为它会产生一个可以用作参数的结果getNumbers()

function add (x1, x2) {
  return x1 + x2;
}

function getNumbers (x3, x4) {
  return x3 + x4;
}

document.getElementById("math").innerHTML = getNumbers(3, add(1,2));
<div id="math"></div>