Javascript的匿名函数小结_javascript技巧
一、什么是匿名函数?
在Javascript定义一个函数一般有如下三种方式:
-
函数关键字(function)语句:
<code>function fnMethodName(x){alert(x);}</code>
Nach dem Login kopieren -
函数字面量(Function Literals):
<code>var fnMethodName = function(x){alert(x);}</code>
Nach dem Login kopieren -
Function()构造函数:
<code>var fnMethodName = new Function('x','alert(x);')</code>
Nach dem Login kopieren
上面三种方法定义了同一个方法函数fnMethodName,第1种就是最常用的方法,后两种都是把一个函数复制给变量fnMethodName,而这个函数是没有名字的,即匿名函数。实际上,相当多的语言都有匿名函数。
二、函数字面量和Function()构造函数的区别
- 虽然函数字面量是一个匿名函数,但语法允许为其指定任意一个函数名,当写递归函数时可以调用它自己,使用Function()构造函数则不行。
<code>var f = function fact(x) { if (x </code>
Nach dem Login kopieren - Function()构造函数允许运行时Javascript代码动态的创建和编译。在这个方式上它类似全局函数eval()。
- Function()构造函数每次执行时都解析函数主体,并创建一个新的函数对象。所以当在一个循环或者频繁执行的函数中调用Function()构造函数的效率是非常低的。相反,函数字面量却不是每次遇到都重新编译的。
- 用Function()构造函数创建一个函数时并不遵循典型的作用域,它一直把它当作是顶级函数来执行。
<code>var y = "global"; function constructFunction() { var y = "local"; return new Function("return y"); <span>// 无法获取局部变量</span> } alert(constructFunction()()); <span>// 输出 "global"</span> </code>
Nach dem Login kopieren
和函数关键字定义相比Function()构造器有自己的特点且要难以使用的多,所以这项技术通常很少使用。而函数字面量表达式和函数关键字定义非常接近。考虑前面的区别,虽然有消息说字面量的匿名函数在OS X 10.4.3下的某些webkit的引擎下有bug,但我们平常所说的匿名函数均指采用函数字面量形式的匿名函数。更多详细内容可以阅读《JavaScript: The Definitive Guide, 5th Edition》的Functions那章。
三、匿名函数的代码模式
昨天hedger wang在他的blog介绍了几种匿名函数的代码模式:
错误模式:其无法工作,浏览器会报语法错。
<code>function(){ alert(1); }();</code>
-
函数字面量:首先声明一个函数对象,然后执行它。
<code>(function(){ alert(1); } ) ( );</code>
Nach dem Login kopieren -
优先表达式:由于Javascript执行表达式是从圆括号里面到外面,所以可以用圆括号强制执行声明的函数。
<code>( function(){ alert(2); } ( ) );</code>
Nach dem Login kopieren -
Void操作符:用void操作符去执行一个没有用圆括号包围的一个单独操作数。
<code>void function(){ alert(3); }()</code>
Nach dem Login kopieren
这三种方式是等同的,hedger wang因为个人原因比较喜欢第3种,而在实际应用中我看到的和使用的都是第1种。
四、匿名函数的应用
- 《Javascript的一种模块模式》中的第一句话就是“全局变量是魔鬼”。配合var关键字,匿名函数可以有效的保证在页面上写入Javascript,而不会造成全局变量的污染。这在给一个不是很熟悉的页面增加Javascript时非常有效,也很优美。实际上,YUI以及其相应的范例中大量使用匿名函数,其他的Javascript库中也不乏大量使用。
- Javascript的函数式编程(functional programming)的基石。具体请看《用函数式编程技术编写优美的 JavaScript》和《函数式JavaScript编程指南》。

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Eine anonyme Funktion, auch Lambda-Ausdruck genannt, ist eine Funktion, die keinen Namen angibt und zur einmaligen Verwendung oder zur Übergabe eines Funktionszeigers verwendet wird. Zu den Funktionen gehören: Anonymität, einmalige Verwendung, Schließungen, Rückschluss auf den Rückgabetyp. In der Praxis wird es häufig zum Sortieren oder für andere einmalige Funktionsaufrufe verwendet.

JavaScript-Tutorial: So erhalten Sie HTTP-Statuscode. Es sind spezifische Codebeispiele erforderlich. Vorwort: Bei der Webentwicklung ist häufig die Dateninteraktion mit dem Server erforderlich. Bei der Kommunikation mit dem Server müssen wir häufig den zurückgegebenen HTTP-Statuscode abrufen, um festzustellen, ob der Vorgang erfolgreich ist, und die entsprechende Verarbeitung basierend auf verschiedenen Statuscodes durchführen. In diesem Artikel erfahren Sie, wie Sie mit JavaScript HTTP-Statuscodes abrufen und einige praktische Codebeispiele bereitstellen. Verwenden von XMLHttpRequest

Einführung in die Methode zum Abrufen des HTTP-Statuscodes in JavaScript: Bei der Front-End-Entwicklung müssen wir uns häufig mit der Interaktion mit der Back-End-Schnittstelle befassen, und der HTTP-Statuscode ist ein sehr wichtiger Teil davon. Das Verstehen und Abrufen von HTTP-Statuscodes hilft uns, die von der Schnittstelle zurückgegebenen Daten besser zu verarbeiten. In diesem Artikel wird erläutert, wie Sie mithilfe von JavaScript HTTP-Statuscodes erhalten, und es werden spezifische Codebeispiele bereitgestellt. 1. Was ist ein HTTP-Statuscode? HTTP-Statuscode bedeutet, dass der Dienst den Dienst anfordert, wenn er eine Anfrage an den Server initiiert

PythonLambda-Ausdrücke sind ein leistungsstarkes und flexibles Tool zum Erstellen prägnanter, lesbarer und benutzerfreundlicher Codes. Sie eignen sich hervorragend zum schnellen Erstellen anonymer Funktionen, die als Argumente an andere Funktionen übergeben oder in Variablen gespeichert werden können. Die grundlegende Syntax eines Lambda-Ausdrucks lautet wie folgt: lambdaarguments:expression Der folgende Lambda-Ausdruck fügt beispielsweise zwei Zahlen hinzu: lambdax,y:x+y Dieser Lambda-Ausdruck kann wie folgt als Argument an eine andere Funktion übergeben werden: defsum( x ,y):returnx+yresult=sum(lambdax,y:x+y,1,2)In diesem Beispiel

Ja, anonyme Funktionen in der Go-Sprache können mehrere Werte zurückgeben. Syntax: func(arg1,arg2,...,argN)(ret1,ret2,...,retM){//Funktionskörper}. Verwendung: Verwenden Sie den Operator :=, um den Rückgabewert zu erhalten; verwenden Sie das Schlüsselwort return, um mehrere Werte zurückzugeben.

Ein Python-Lambda-Ausdruck ist eine kleine anonyme Funktion, die einen Ausdruck in einer Variablen speichert und seinen Wert zurückgibt. Lambda-Ausdrücke werden oft verwendet, um einfache Aufgaben auszuführen, die durch das Schreiben einer separaten Funktion erledigt werden können, aber Lambda-Ausdrücke können den Code prägnanter und lesbarer machen. Die Syntax eines Lambda-Ausdrucks lautet wie folgt: lambdaarguments: expressionarguments ist die vom Lambda-Ausdruck empfangene Parameterliste, und expression ist der Hauptteil des Lambda-Ausdrucks, der den Code enthält, der ausgeführt werden muss. Der folgende Lambda-Ausdruck addiert beispielsweise zwei Zahlen und gibt deren Summe zurück: lambdax,

Der Lambda-Ausdruck in Python ist eine weitere Syntaxform einer anonymen Funktion. Es handelt sich um eine kleine anonyme Funktion, die an einer beliebigen Stelle im Programm definiert werden kann. Ein Lambda-Ausdruck besteht aus einer Parameterliste und einem Ausdruck, der jeder gültige Python-Ausdruck sein kann. Die Syntax eines Lambda-Ausdrucks lautet wie folgt: lambdaargument_list:expression. Der folgende Lambda-Ausdruck gibt beispielsweise die Summe zweier Zahlen zurück: lambdax,y:x+y. Dieser Lambda-Ausdruck kann an andere Funktionen wie die Karte übergeben werden () Funktion: Zahlen=[ 1,2,3,4,5]Ergebnis=Karte(Lambda

Anonyme Funktionen innerhalb von Funktionen in Go ermöglichen die Erstellung einmaliger Funktionen innerhalb eines Funktionskörpers, ohne diese explizit zu deklarieren. Sie werden definiert, indem das Schlüsselwort func verwendet und der Funktionsname weggelassen wird. Wird durch Abschlüsse implementiert, die den Funktionskörpercode und Verweise auf alle lokalen Variablen in der Funktion enthalten, die die anonyme Funktion enthält. Beispielsweise kann eine anonyme Funktion in der Funktion sort.Slice verwendet werden, um ein Segment von Ganzzahlen zu sortieren.
