同时分配和执行Javascript函数

同时分配和执行Javascript函数,javascript,function,Javascript,Function,有没有一种更优雅的方式来编写类似这样的东西,其中myFunction被指定给func函数,但func也在赋值过程中执行 var myFunction = (function(){ var func = function(){ console.log('hello world'); }; func(); return func; })(); ... myFunction(); 你的核心陈述是 var <name> = (<functionExpre

有没有一种更优雅的方式来编写类似这样的东西,其中myFunction被指定给func函数,但func也在赋值过程中执行

var myFunction = (function(){
  var func = function(){
    console.log('hello world');
  };

  func();
  return func;
})();

...

myFunction();

你的核心陈述是

var <name> = (<functionExpression>)();
var=();
我不明白这怎么会更优雅

var myFunction = (function func(){
  console.log('hello world');

  return func;
})();

您可以命名您的匿名函数。但是,此名称只能在函数本身内部访问。

赋值表达式返回赋值,但必须单独声明变量,因此仍需重复标识符:

var outer;
(outer = function() {
    var inner;
    return (inner = function() {
        print('hello world');
    })(), inner;
})();

outer();

也就是说,如果我从同事那里看到这段代码,我会用卷起的报纸打他。

你可以做
return func(),func
,但我认为没有办法避免重复
func
(除非从函数本身返回
func
)。如果你真的是这么说的话。请澄清你指的是哪一个函数。是的,我指的是函数的重复。重复标识符没有什么错。它们可以让你分辨代码中的内容,重复它们可以让你更清楚地知道返回了什么和执行了什么。特别是如果标识符引用的函数占用了几行代码,那么执行所有这些内联操作将使代码易于解析。这将把函数的返回值赋给变量。@millimoose Yes。这正是OP的代码所做的。该死,这是一个赋值,它将表达式的结果(在本例中是IIFE)赋值给变量。;-)现在有了一个返回自身的函数。这能实现什么?(除此之外,您还可以执行
myFunction()()
)这是OP要求的。我不知道,你可以像
myFunction()一样链接它。但这当然也可以通过另一种方法来实现。