下面是一个在闭包中定义匿名函数的方法,调用该函数,然后忘记它:
(function () { "do stuff"; })();
这用于在不增加脚本体积的情况下保持有限的范围(IIFE:立即调用的函数表达式)。
如果您希望立即执行一个函数,同时仍保留该函数供将来使用,该怎么办,如下所示:
var doThing;
(doThing = function () { "do stuff"; })();
这在我测试过的浏览器(Chrome、FF、IE8、IE10)中有效,但这没有通过 JSLint(错误调用)。这样做有任何兼容性问题吗?
有没有 JSLint 看好的方法来完成这个?
最佳答案
如果传递 jslint 是绝对必要的,那么:
var doThing;
(doThing = function () { "do stuff"; }).call();
应该完成这项工作。
编辑
用于在 .call
期间传递参数
var doThing;
(doThing = function (param1, param2) { 'do stuff'; }).call(this, arg1, arg2);
关于javascript - 如何简洁地赋值并立即调用一个函数变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12358927/