这个javascript函数声明是什么意思

这个javascript函数声明是什么意思,javascript,Javascript,可以解释一下炼金术变量指向的是什么,我的意思是指向一个炼金术命名函数或一个未命名函数的实例,它有一个炼金术的函数定义 如果我们说新炼金术(配置),我们会得到什么var Alchemy将等同于一个名为Alchemy的函数,该函数接受一个userConf参数。这里的部分混淆在于,本质上有两个“Alchemy”变量——一个用于闭包的每个深度级别 var Alchemy = (function() { function Alchemy(userConf) { .... .

可以解释一下炼金术变量指向的是什么,我的意思是指向一个炼金术命名函数或一个未命名函数的实例,它有一个炼金术的函数定义


如果我们说新炼金术(配置),我们会得到什么

var Alchemy
将等同于一个名为
Alchemy
的函数,该函数接受一个
userConf
参数。

这里的部分混淆在于,本质上有两个“Alchemy”变量——一个用于闭包的每个深度级别

var Alchemy = (function() {
    function Alchemy(userConf) {
      ....
      ....
    }
    return Alchemy;
}) ();
但是你的第一个理论是正确的-这个模块的目的是创建一个命名函数,炼金术。我猜在
中,它会做其他事情来初始化这个函数变量,比如向它的原型添加东西


如果调用
newalchemy(config)
,则
config
将作为
userConf
传入。
newalchemy
调用的结果将是一个类型为
Alchemy
的新对象,并且对
区域内的关键字
this
的任何引用都将影响所述对象。

变量Alchemy将是闭包中返回的Alchemy函数。 这样做的原因之一是将该函数中的任何其他变量隐藏在全局范围之外

var x = 3;
(function() {
  var x;
  console.log(x) // This will be null/undefined - because it's a different X
}());

在本例中,在闭包之外无法访问someVar。

您需要熟悉模块模式。请参阅:这是一个。您将有一个
函数Alchemy(){}
,它返回
Alchemy
,然后您将其设置为
var Alchemy
。您也可以检查此项:谢谢大家,您帮助我正确理解此语法。
var Alchemy = (function() {
    var someVar = '';

    function Alchemy(userConf) {
      ....
      ....
    }
    return Alchemy;
}) ();