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

时间:2015-07-24 18:25:39

标签: javascript

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

可以解释Alchemy变量指向的是什么,我的意思是指向炼金术命名函数或具有Alchemy函数def的未命名函数实例

如果我们说new Alchemy(config);

,我们会有什么

3 个答案:

答案 0 :(得分:2)

这里的部分困惑是,基本上有两个" Alchemy"变量 - 每个深度级别的闭包一个。

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

但是你的第一个理论是正确的 - 这个块的目的是创建一个命名函数Alchemy。我想在.....中它会做其他事情来初始化这个函数变量,就像在它的原型中添加东西一样。

如果您致电new Alchemy(config),则config将作为userConf传递。 new Alchemy调用的结果将是Alchemy类型的新对象,this区域内对关键字....的任何引用都将影响所述对象。

答案 1 :(得分:0)

var connect = require('connect'); var server = connect.createServer(function(req,res){ res.write("Hello World"); res.end(); }); server.listen(8080); 将等同于名为var Alchemy的函数,该函数接受Alchemy参数。

答案 2 :(得分:0)

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

var Alchemy = (function() {
    var someVar = '';

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

在此示例中,someVar将无法在闭包之外访问。