如何在函数调用期间实现可选括号? (函数重载)

时间:2010-09-21 14:01:12

标签: javascript overloading

我的猜测是,这是不可能的,但我希望ff()做同样的事情。

   var f = function(str){ console.log(str||'foo'); }();

   f;                      // wanted output: 'foo'
   f();                    // wanted output: 'foo'
   f('bar');               // wanted output: 'bar'

因为f不再是函数定义,所以似乎不可能f(),但也许我错过了一些东西。有什么建议吗?

3 个答案:

答案 0 :(得分:2)

不,这是不可能的。必须使用括号来确定应该调用该函数。

表达式f()的值是调用函数的结果,而f的值是函数本身(如果显示它,则为f.tostring())。

答案 1 :(得分:1)

不可能。括号是javascript知道你希望方法对象被执行的方式。

答案 2 :(得分:0)

从您的def中删除()

var f = function(str){ console.log(str||'foo'); };

除了你的第一个案例,所有这些都有效。您需要指定()来告诉javascript执行函数