标签: self-executing-function

406
推荐指数
9
解决办法
12万
查看次数

通过Lambdas自行执行匿名函数

在javascript中,有创建匿名函数并立即调用它的常见模式(通常这称为自执行匿名函数立即调用的函数表达式).

使用Java 8 lambdas,有没有一种标准的方法来复制这种行为?有点像(() -> doSomething())().

这个问题基本上问了同样的问题,但对于Java 7.我明确地寻找使用lambdas的构造.

java lambda java-8 self-executing-function

7
推荐指数
1
解决办法
1366
查看次数

什么是自执行匿名函数或者这段代码在做什么?

var module = {};


(function(exports){

  exports.notGlobalFunction = function() {
    console.log('I am not global');
  };  

}(module));

function notGlobalFunction() {
  console.log('I am global');
}

notGlobalFunction(); //outputs "I am global"
module.notGlobalFunction(); //outputs "I am not global"
Run Code Online (Sandbox Code Playgroud)

谁能帮我理解这里发生了什么?如果你打电话notGlobalFunction(),我会得到它,它只会调用第二个函数.

但是在var module = {}做什么?为什么在第一个函数内再次调用?

它说这通常被称为自动执行的匿名函数,但我不知道这意味着什么.

javascript function self-executing-function

6
推荐指数
1
解决办法
9561
查看次数

NodeJS - 如何在自执行函数中将构造函数分配给module.exports?

我正在尝试在NodeJS中的自执行函数中分配构造函数.我很确定它不起作用,因为我的参数是一个指向module.exports的变量,但我很好奇是否有办法使其工作,同时保持尽可能接近自执行格式.

这是代码被调用的方式......

var TemplateEngine = require('./templateEngine');
templateEngine = new TemplateEngine({engine: 'swig'}); // "object is not a function"
Run Code Online (Sandbox Code Playgroud)

这是一个很好的代码示例...

var assert = require('assert');
var swig = require('swig');

// Constructor
var TemplateEngine = function(args) {
    assert.ok(args.engine, 'engine is required');
    var templateEngine = {};

    templateEngine.engine = args.engine;

    templateEngine.Render = function(templateString, model) {
        var result = swig.render(templateString, model);
        return result;
    };

    return templateEngine;
};

module.exports = TemplateEngine;
Run Code Online (Sandbox Code Playgroud)

这里是我想要使用的代码样式的一个例子,但它产生了一个"TypeError:Object is not function"错误,因为我实际上并没有分配给module.exports,只是一个复制它所指向的任何变量的变量至.

(function(templateEngine) {
    var assert = require('assert');
    var swig = require('swig');

    templateEngine = function(args) …
Run Code Online (Sandbox Code Playgroud)

javascript constructor node.js self-executing-function

6
推荐指数
1
解决办法
2990
查看次数

如果变量是全局的,为什么需要在javascript中将参数传递给自执行函数?

我正在查看underscore.js库的代码(jQuery做同样的事情)并且只想澄清为什么窗口对象被传递到自执行函数.

例如:

(function() {            //Line 6
  var root = this;       //Line 12
  //Bunch of code
}).call(this);           //Very Bottom
Run Code Online (Sandbox Code Playgroud)

既然this是全局的,为什么它被传递到函数中?以下工作也不会这样吗?这样做会产生什么问题?

(function() {
  var root = this;
  //Bunch of code
}).call();
Run Code Online (Sandbox Code Playgroud)

javascript jquery underscore.js self-executing-function

5
推荐指数
1
解决办法
763
查看次数

自执行 C++11 lambdas 的成本

窗口过程之外,我正在switch使用自执行 lambda编写语句,如下所示:

LRESULT 回调过程(HWND hWnd、UINT msg、WPARAM wp、LPARAM lp)
{
    开关(味精)
    {
        case WM_CREATE: return [&](WPARAM wp, LPARAM lp) {
            do_something(wp, lp);
            返回0;
        }(wp, lp);

        case WM_SIZE: return [&](HWND hWnd) {
            do_another_thing(hWnd);
            返回0;
        }(hWnd);
    }
    返回 DefWindowProc(hWnd, msg, wp, lp);
}

我相信编译器可以按照他们想要的方式自由地优化它,但一般来说,与不使用这些 lambdas 相比,编译器会为此添加很多样板代码吗?

编译器能否检测到多余的 lambdas 并删除它们?

c++ lambda switch-statement c++11 self-executing-function

5
推荐指数
2
解决办法
1469
查看次数

使用自调用函数是变量独立的

可能重复:
循环内部的Javascript闭包 - 简单实用的例子

我正在尝试使用自调用函数,以便每个函数都objects将返回不同的消息.

<script type="text/javascript">

    objects = {};

    for( var i = 0; i < 10; i++ ) {

        objects['function'+i] = function () {

            var text = ( function() { return "I am object " + i; } )();

            return text;

        };

    }

    for( var j = 0; j < 10; j++ ) {

        document.write( objects['function'+j]() + "<br>" );

    }

</script>
Run Code Online (Sandbox Code Playgroud)

到目前为止,上述结果如下:

我是对象10

我是对象10

我是对象10

我是对象10

我是对象10

我是对象10

我是对象10

我是对象10

我是对象10

我是对象10

如何使用自调用函数立即设置消息而不是与不稳定的事情联系在一起i

javascript self-invoking-function self-executing-function

4
推荐指数
1
解决办法
553
查看次数

JavaScript:带参数的自执行功能

CodeMirror.net使用这个构造(我稍微简化)来为它的JavaScript编辑器引入代码:

(function(mod) {
        this.CodeMirror = mod();
    })(function() {
      "use strict";
       (15,000-odd lines of advanced JS)
    }
Run Code Online (Sandbox Code Playgroud)

现在,我知道这是一个自动执行的功能,我已经阅读了很多关于它们的帖子.据我所知,实际上,这段代码正在创建一个CodeMirror对象.我只是不懂机制.

  1. 参数(mod)的作用是什么?更广泛地说,当您为自执行函数提供参数时,它意味着什么?
  2. 内部函数()声明的作用是什么?看来这在某种程度上与mod有关吗?

谢谢你的帮助.

javascript codemirror self-executing-function

4
推荐指数
1
解决办法
136
查看次数

修改自执行函数中的参数

我希望能够修改传递给自执行函数的参数.

以下是一些示例代码:

var test = 'start';
(function (t) {t = 'end'} )(test);
alert(test) //alerts 'test'
Run Code Online (Sandbox Code Playgroud)

这里是一个小提琴.变量test没有改变.我怎样才能改变它,就像传递参考一样?

javascript anonymous-function pass-by-reference self-executing-function

2
推荐指数
1
解决办法
2749
查看次数

自执行Java方法

在JavaScript中,可以编写一个这样的自执行函数:

(function foo() {
    console.log("bar");
}());
Run Code Online (Sandbox Code Playgroud)

我希望用Java做到这一点.例如:

// This code does not work obviously
public static void main(String[] args) {
    (foo() {
        System.out.println("bar");
    }());
}
Run Code Online (Sandbox Code Playgroud)

有这样的事吗?

java java-7 self-executing-function

0
推荐指数
1
解决办法
1773
查看次数