`
风雪涟漪
  • 浏览: 508833 次
  • 性别: Icon_minigender_1
  • 来自: 大连->北京
博客专栏
952ab666-b589-3ca9-8be6-3772bb8d36d4
搜索引擎基础(Search...
浏览量:9072
Ae468720-c1b2-3218-bad0-65e2f3d5477e
SEO策略
浏览量:18488
社区版块
存档分类
最新评论

Javascript 函数 (四) 自调用函数(Self-invoking Functions)

阅读更多

自调用函数(Self-invoking Functions)

自调用函数也是匿名函数的一种表现形式,这个函数在定义之后,直接调用。如下

(
 function(){
   alert('haha');
 }
)()

看起来还挺怪异,不过确实很简单。

自调用函数很方便使用,可以不用定义更多的全局变量。还有个好处,就是这个函数不能被执行两遍。真是非常适合做初始化的工作。许多著名的javascript库特别多的源码中使用了这个功能,例如本人喜欢的Jquery.

 

分享到:
评论
5 楼 hrsvici412 2009-02-18  
看到这个让我解决了一个ajax封装的问题!谢谢!
4 楼 hanjs 2008-12-29  
可以这样理解不?因为没有句柄来接收这个函数,因此只能执行一次?之后也没有办法调用吧。
3 楼 hite 2008-12-26  
afcn0 写道
谁说不能执行两边
(function(){temp=arguments.callee;alert("haha")})();temp();

这个优点主要是里面的声明不会污染window,隶属于执行的scope就是执行期环境


这个代码在ie7下执行两遍。firefox里不执行。
2 楼 风雪涟漪 2008-12-25  
呵呵。恩。说的不严谨。我想表达的意思是,这个自定义函数特别方便做初始化的功能。你的这个写法本身temp本身就不规范。为什么要这么写?当全局变量了?这样的写法本身就使代码不规范了。
1 楼 afcn0 2008-12-25  
谁说不能执行两边
(function(){temp=arguments.callee;alert("haha")})();temp();

这个优点主要是里面的声明不会污染window,隶属于执行的scope就是执行期环境

相关推荐

    JavaScript.教程

    自调用函数 (Self-invoking Functions) 自调用函数是指在声明时立即执行的函数。这种模式常用于创建独立的作用域,避免污染全局命名空间。例如: ```javascript (function() { var privateVar = "private"; ...

    javascript高级教程

    - **自调用函数 (Self-invoking functions)**: 定义后立即执行的函数。通常用于创建私有作用域。 ```javascript (function() { console.log("Immediately invoked function"); })(); ``` - **内部函数 (Inner ...

    javascript定义函数的方法

    自调用函数(Self-Invoking Function)是一种特殊的函数表达式,它在定义后立即执行。通常用来避免污染全局作用域或初始化代码。例如: ```javascript (function() { // 函数体 })(); ``` 6. **函数作为值**...

    js自调用匿名函数的三种写法(推荐)

    在JavaScript编程中,自调用匿名函数(Self-invoking anonymous function)是一种特殊的函数表达式。它被创建后立即执行,不会被赋值给任何变量,也没有函数名。这在需要一次性使用的代码块中非常有用,避免了变量名...

    Javascript基础知识盲点总结之函数

    3. **自调函数(Self-Invoking Function)**: 自调函数是一种定义后立即执行的函数,可以用来避免污染全局命名空间。它可以是匿名的,也可以有名字。下面是一个自调函数的例子: ```javascript (function(name)...

    js代码-自执行函数

    JavaScript中的自执行函数(Self-Executing Anonymous Function,也称为Self-Invoking Function)是一种常见的编程技巧,它在JavaScript中有着广泛的应用。自执行函数的主要作用是封装变量和方法,防止全局污染,...

    JavaScript中的apply和call函数详解_.docx

    在JavaScript中,`apply`和`call`是两种非常重要的函数调用方式,它们都用于改变函数内部`this`的指向以及动态传递参数。这两者的主要区别在于参数的传递方式。 首先,`this`在JavaScript中是一个关键字,它在不同...

    虚函数表解析

    - **虚表指针**:每个包含虚函数的类都有自己的虚函数表,但不同类的虚函数表可能共享相同的虚函数地址(如果它们继承自同一个基类的话)。 - **多态性**:虚函数使得我们可以根据实际指向的对象类型来调用不同的...

    Unity3D中MonoBehaviour类整理

    - `IsInvoking()` 和 `IsInvoking(string methodName)`:检查是否存在等待调用的函数。 协程通过`IEnumerator`接口实现,允许异步执行代码,例如在`Update()`中进行长时间的操作而不会阻塞主线程。`StartCoroutine...

    Invoking Matlab using Jave

    函数名`mysum`将在Java中作为方法调用的依据。 ### 3. 创建Deployment Project 在MATLAB中,创建一个Deployment Project,并命名为你希望生成的jar文件名,例如`Yu3Project`。这将用于打包MATLAB函数为可执行的...

    python-3.6.1 Tutorial

    - **Invoking the Interpreter(调用解释器)** - 解释如何在不同的操作系统上启动Python解释器。 - 如何在命令行界面中输入Python代码并查看结果。 - **The Interpreter and Its Environment(解释器及其环境)**...

    python 官方快速教程

    - **2.1 Invoking the Interpreter**(调用解释器) - 如何启动Python解释器。 - 在命令行中输入`python`或`python3`来启动。 - **2.2 The Interpreter and Its Environment**(解释器及其环境) - 解释器的工作...

    CSharp_invoking_CPPs_DLL.rar_cpp c# dll 继承_csharp dll

    为了使C#能够调用C++的DLL,我们需要确保C++函数的签名符合C语言的调用约定,因为C#默认使用的是托管调用约定,而C++可以使用标准C调用约定(__cdecl)。在C++中,我们可以使用`extern "C"`来避免名字修饰,确保函数...

    catkin_make编译baxter功能包报错处理(csdn)————程序.pdf

    C++11是C++的一个重要版本,引入了许多新特性和改进,例如`nullptr`、`auto`、`lambda`函数、右值引用等。为了解决这个问题,我们需要在CMakeLists.txt文件中调整C++编译标志。 在CMakeLists.txt文件中,你可以找到...

    Invoking web methods from a C++ console application

    "Invoking web methods from a C++ console application"这个主题旨在教导开发者如何利用C++这一强大的编程语言与Web服务进行交互。 C++ console application是指在命令行环境中运行的程序,不包含图形用户界面。...

    javascript权威指南(第六版)

    8.2 Invoking Functions 166 8.3 Function Arguments and Parameters 171 8.4 Functions As Values 176 8.5 Functions As Namespaces 178 8.6 Closures 180 8.7 Function Properties, Methods, and Constructor 186 ...

    pytest最新文档

    ##### 5.1 交互式调用 pytest (Invoking pytest interactively) - pytest 提供了一个交互式的命令行界面,允许用户动态地控制测试的执行。 ##### 5.2 异常和警告的断言助手 (Helpers for assertions about ...

    java8stream源码-Java8:Java8示例

    函数组合函数和另一个函数的组合,而不关心函数这是抽象你不能说是用更小的函数构建 设计功能一直向下 类型不是类 有效输入集 有效输出集 Strive for totality Constraint the Type Alwasy give defined output ...

Global site tag (gtag.js) - Google Analytics