我的猜测是,这是不可能的,但我希望f
和f()
做同样的事情。
var f = function(str){ console.log(str||'foo'); }();
f; // wanted output: 'foo'
f(); // wanted output: 'foo'
f('bar'); // wanted output: 'bar'
因为f
不再是函数定义,所以似乎不可能f()
,但也许我错过了一些东西。有什么建议吗?
答案 0 :(得分:2)
不,这是不可能的。必须使用括号来确定应该调用该函数。
表达式f()
的值是调用函数的结果,而f
的值是函数本身(如果显示它,则为f.tostring()
)。
答案 1 :(得分:1)
不可能。括号是javascript知道你希望方法对象被执行的方式。
答案 2 :(得分:0)
从您的def中删除()
。
var f = function(str){ console.log(str||'foo'); };
除了你的第一个案例,所有这些都有效。您需要指定()
来告诉javascript执行函数