【发布时间】:2012-09-10 20:27:45
【问题描述】:
以下是在闭包中定义匿名函数,调用该函数,然后忘记它的方法:
(function () { "do stuff"; })();
这用于在不向脚本添加大量内容的情况下保持有限的范围(IIFE:立即调用函数表达式)。
如果您希望立即执行某个函数,同时仍保留该函数以供将来使用,该怎么办,如下所示:
var doThing;
(doThing = function () { "do stuff"; })();
这适用于我测试过的浏览器(Chrome、FF、IE8、IE10),但这并没有通过 JSLint(错误调用)。这样做有兼容性问题吗?
有没有一种被 JSLint 看好的方法来完成这个?
【问题讨论】:
-
如果你的函数体是
return 10;,那doThing不会被定义为10而不是函数本身吗? -
@Cory 不,括号在作业周围。很容易测试,对吧?
-
@DaveNewton:啊,谢谢你指出这一点。
标签: javascript function jslint iife