如何在JavaScript中调用自行执行函数?

前端之家收集整理的这篇文章主要介绍了如何在JavaScript中调用自行执行函数?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当我有一些代码时,我需要执行不止一次,我将其包装在一个函数中,所以我不必重复.有时,另外还需要在页面加载时最初执行此代码.现在我这样做:
function foo() {
   alert('hello');
}

foo();

我宁愿这样做:

(function foo() {
   alert('hello');
})();

问题是,这只能在页面加载时执行,但是如果我尝试使用foo()调用它,它将无法正常工作.

我猜这是一个范围问题,但是有什么办法可以让自己执行的函数在以后调用时工作吗?

解决方法

如果您的函数不依赖于返回值,则可以执行此操作
var foo = (function bar() {
   alert('hello');
   return bar;
})();   // hello

foo();  // hello

这将使用命名函数表达式中的本地引用栏将函数返回到外部foo变量.

或者即使如此,您可以使返回值有条件…

var foo = (function bar() {
   alert('hello');
   return foo ? "some other value" : bar;
})();   // hello

alert( foo() );  // hello --- some other value

或者只是手动分配给变量而不是返回…

var foo; 
(function bar() {
   alert('hello');
   foo = bar;
})();   // hello

foo();  // hello

@RobG所述,IE的某些版本会将标识符泄漏到封闭的变量范围内.该标识符将引用您创建的功能的副本.为了使您的NFE IE-safe(r),您可以取消该引用.

bar = null;

请注意,标识符仍然会在范围链上以相同的名称遮蔽标识符. Nullifying不会帮助,局部变量不能被删除,所以明智地选择NFE名称.

猜你在找的JavaScript相关文章