function(), das die Funktion implementiert-js-Tutorial-php.cn

function(), das die Funktion implementiert

WBOY
Freigeben: 2023-09-04 09:41:20
Original
1163 Leute haben es durchsucht

function(), das die Funktion implementiert

Funktionen sind Container von Codeanweisungen und können mit dem Klammeroperator()aufgerufen werden. Parameter können beim Aufruf in Klammern übergeben werden, sodass beim Aufruf der Funktion durch Anweisungen innerhalb der Funktion auf bestimmte Werte zugegriffen werden kann.

Im folgenden Code verwenden wir den Operatornew, um zwei Versionen des FunktionsobjektsaddNumberszu erstellen, eine davon im gebräuchlicheren Literalmodus. Beide erfordern zwei Parameter. In jedem Fall rufen wir die Funktion auf und übergeben die Argumente in Klammern an dennew运算符创建addNumbers函数 objectone 的两个版本,另一个版本使用更常见的文字模式。两者都需要两个参数。在每种情况下,我们都调用该函数,并在括号中传递参数()-Operator.

Beispiel: sample76.html

Nach dem Login kopieren

Funktionen können verwendet werden, um einen Wert zurückzugeben, ein Objekt zu erstellen oder einfach als Mechanismus zum Ausführen von Code zu dienen. JavaScript hat viele Einsatzmöglichkeiten für Funktionen, aber in ihrer einfachsten Form sind Funktionen der einzige Bereich ausführbarer Anweisungen.


函数()Parameter

Function()构造函数采用无限数量的参数,但Function()Das letzte vom Konstruktor erwartete Argument ist eine Zeichenfolge, die die Anweisungen enthält, aus denen der Hauptteil der Funktion besteht. Alle Argumente, die vor dem letzten an den Konstruktor übergeben wurden, stehen der zu erstellenden Funktion zur Verfügung. Sie können mehrere Parameter auch als durch Kommas getrennte Zeichenfolgen senden.

Im folgenden Code vergleiche ich die Verwendung vonFunction()-Konstruktoren mit dem häufigeren Muster der Instanziierung von Funktionsobjekten.

Beispiel: sample77.html

Nach dem Login kopieren

Es wird nicht empfohlen oder normalerweise nicht empfohlen, denFunction()构造函数,因为 JavaScript 将使用eval()来解析包含函数逻辑的字符串。许多人认为eval()-Konstruktor direkt zu verwenden, da JavaScripteval()verwendet, um die Zeichenfolge mit der Funktionslogik zu analysieren. Viele Leute halteneval()für unnötigen Overhead. Wenn es verwendet wird, liegt höchstwahrscheinlich ein Fehler im Codedesign vor.

Die Verwendung einesFunction()构造函数而不使用new关键字与仅使用构造函数创建函数对象具有相同的效果(new Function('x','return x')函数(('x','返回x')Konstruktors ohne Verwendung des Schlüsselwortsnewhat den gleichen Effekt wie die Verwendung nur des Konstruktors zum Erstellen eines Funktionsobjekts (new Function('x','return x') mit function(('x','return x')).

Beim direkten Aufruf des

-Konstruktors wird kein Abschluss erstellt.Function()


Eigenschaften und MethodenFunction()

Ein Funktionsobjekt hat die folgenden Eigenschaften (ausgenommen geerbte Eigenschaften und Methoden):

Eigenschaften (

):Function.prototype;

  • 原型

Eigenschaften und Methoden von Funktionsobjektinstanzen

Eine Funktionsobjektinstanz verfügt über die folgenden Eigenschaften und Methoden (ausgenommen geerbte Eigenschaften und Methoden):

Instanzeigenschaften (

):var myFunction = function(x, y, z) {};myFunction.length;

  • 参数
  • 构造函数
  • 长度
Instanzmethoden (

):var myFunction = function(x, y, z) {};myFunction.toString();

  • apply()
  • call()
  • toString()

Funktion gibt immer einen Wert zurück

Während es möglich ist, eine Funktion zu erstellen, die einfach eine Codeanweisung ausführt, kommt es auch häufig vor, dass Funktionen einen Wert zurückgeben. Im folgenden Beispiel geben wir einen String von der Funktion

zurück.sayHi

Beispiel: sample78.html

Nach dem Login kopieren

Wenn die Funktion keinen Rückgabewert angibt, wird eine

-Funktion zurückgegeben, die die Zeichenfolge „yelp“ in der Konsole protokolliert, ohne explizit einen Wert zurückzugeben.undefined。在以下示例中,我们调用yelp

Beispiel: sample79.html

Nach dem Login kopieren

Das hier zu beachtende Konzept besteht darin, dass alle Funktionen einen Wert zurückgeben, auch wenn Sie nicht explizit einen zurückzugebenden Wert angeben. Wenn kein Rückgabewert angegeben ist, ist der Rückgabewert

.undefined


Funktionen sind erstklassige Bürger (nicht nur Syntax, sondern auch Werte)

In JavaScript sind Funktionen Objekte. Das bedeutet, dass Funktionen in Variablen, Arrays oder Objekten gespeichert werden können. Darüber hinaus können Funktionen an Funktionen übergeben oder von ihnen zurückgegeben werden. Eine Funktion hat Eigenschaften, weil sie ein Objekt ist. All diese Faktoren machen Funktionen zu erstklassigen Bürgern in JavaScript.

Beispiel: sample80.html

Nach dem Login kopieren

Es ist wichtig zu erkennen, dass eine Funktion ein Objekt und damit ein Wert ist. Er kann wie jeder andere Ausdruck in JavaScript übergeben oder erweitert werden.


Parameter an Funktion übergeben

Parameter sind Werkzeuge zum Übergeben von Werten an den Funktionsumfang beim Aufrufen einer Funktion. Im folgenden Beispiel nennen wir

. Da wir es so vordefiniert haben, dass es zwei Parameter annimmt, stehen in seinem Gültigkeitsbereich zwei zusätzliche Werte zur Verfügung.addFunction()

Beispiel: sample81.html

Nach dem Login kopieren

Im Gegensatz zu einigen anderen Programmiersprachen ist es in JavaScript völlig legal, Parameter wegzulassen, selbst wenn die Funktion so definiert wurde, dass sie diese Parameter akzeptiert. Fehlenden Parametern wird nur der Wert

zugewiesen. Wenn der Parameterwert weggelassen wird, funktioniert die Funktion möglicherweise nicht ordnungsgemäß.undefined

Wenn Sie unerwartete Parameter an die Funktion übergeben (Parameter, die beim Erstellen der Funktion nicht definiert wurden), tritt kein Fehler auf. Auf diese Parameter kann über das

-Objekt zugegriffen werden, das allen Funktionen zur Verfügung steht.arguments


thisarguments值可用于所有函数

在所有函数的范围和主体内,thisarguments值可用。

arguments对象是一个类似数组的对象,包含传递给函数的所有参数。在下面的代码中,即使我们在定义函数时放弃指定参数,我们也可以依赖传递给函数的arguments数组来访问在调用时发送的参数。

示例:sample82.html

Nach dem Login kopieren

this关键字,传递给所有函数,是对包含该函数的对象的引用。正如您所期望的,对象中包含的作为属性(方法)的函数可以使用this来获取对父对象的引用。当函数定义在全局作用域时,this的值为全局对象。查看以下代码并确保您了解this返回的内容。

示例:sample83.html

Nach dem Login kopieren

arguments.callee属性

arguments对象有一个名为callee的属性,它是对当前正在执行的函数的引用。此属性可用于从函数范围内引用该函数 (arguments.callee)a 自引用。在下面的代码中,我们使用此属性来获取对调用函数的引用。

示例:sample84.html

Nach dem Login kopieren

当需要递归调用函数时,这非常有用。


函数实例length属性和arguments.length

arguments对象具有唯一的length属性。虽然您可能认为这个 length 属性将为您提供已定义参数的数量,但它实际上提供了在调用期间发送到函数的参数数量。

示例:sample85.html

Nach dem Login kopieren

使用所有Function()实例的length属性,我们实际上可以获取函数期望的参数总数。

示例:sample86.html

Nach dem Login kopieren

arguments.length属性在 JavaScript 1.4 中已弃用,但可以从函数对象的length属性访问发送到函数的参数数量。接下来,您可以通过利用callee属性来首先获取对正在调用的函数的引用 (arguments.callee.length) 来获取长度值。


重新定义函数参数

函数参数可以直接在函数内部重新定义,也可以使用arguments数组。看一下这段代码:

示例:sample87.html

Nach dem Login kopieren

请注意,我可以使用arguments索引或直接为参数重新分配新值来重新定义 bar 参数的值。


在函数完成之前返回函数(取消函数执行)

通过使用带或不带值的return关键字,可以在调用期间随时取消函数。在下面的示例中,如果参数未定义或不是数字,我们将取消add函数。

示例:sample88.html

Nach dem Login kopieren

这里要讲的概念是,您可以在函数执行过程中的任何时刻使用return关键字来取消函数的执行。


定义函数(语句、表达式或构造函数)

函数可以用三种不同的方式定义:函数构造函数、函数语句或函数表达式。在下面的示例中,我演示了每种变体。

示例:sample89.html

Nach dem Login kopieren

有人说函数还有第四种类型的定义,称为“命名函数表达式”。命名函数表达式只是一个包含名称的函数表达式(例如,var add = function add(x, y) {return x+y})。


调用函数(函数、方法、构造函数或call()apply())

使用四种不同的场景或模式调用函数。

  • 作为函数
  • 作为一种方法
  • 作为构造函数
  • 使用apply()call()

在下面的示例中,我们将检查每种调用模式。

示例:sample90.html

Nach dem Login kopieren

确保您了解所有四种调用模式,因为您将遇到的代码可能包含其中任何一种。


匿名函数

匿名函数是没有给出标识符的函数。匿名函数主要用于将函数作为参数传递给另一个函数。

示例:sample91.html

Nach dem Login kopieren

自调用函数表达式

函数表达式(实际上是除从Function()构造函数创建的函数之外的任何函数)可以在定义后使用括号运算符立即调用。在以下示例中,我们创建sayWord()函数表达式,然后立即调用该函数。这被认为是一个自调用函数。

示例:sample92.html

Nach dem Login kopieren

自调用匿名函数语句

可以创建自调用的匿名函数语句。这称为自调用匿名函数。在下面的示例中,我们创建了几个立即调用的匿名函数。

示例:sample93.html

Nach dem Login kopieren

根据 ECMAScript 标准,如果要立即调用函数,则需要在函数两边加上括号(或将函数转换为表达式的任何内容)。


函数可以嵌套

函数可以无限期地嵌套在其他函数中。在下面的代码示例中,我们将goo函数封装在bar函数内部,该函数位于foo函数内部。

示例:sample94.html

Nach dem Login kopieren

这里的简单概念是函数可以嵌套,并且嵌套的深度没有限制。

请记住,嵌套函数的this的值将是 JavaScript 1.5、ECMA-262 第 3 版中的头对象(Web 浏览器中的window对象)。


将函数传递给函数以及从函数返回函数

如前所述,函数是 JavaScript 中的一等公民。由于函数是一个值,并且函数可以传递任何类型的值,因此函数可以传递给函数。接受和/或返回其他函数的函数有时称为“高阶函数”。

在下面的代码中,我们将一个匿名函数传递给foo函数,然后立即从foo函数返回。变量bar所指向的正是这个匿名函数,因为foo接受并返回匿名函数。

示例:sample95.html

Nach dem Login kopieren

因此,当调用bar时,它会调用传递给foo()函数的匿名函数,然后从foo()函数传回并从bar引用多变的。所有这些都是为了展示函数可以像任何其他值一样传递的事实。


在定义函数语句之前调用函数语句(又名函数提升)

函数语句可以在执行期间在其实际定义之前调用。这有点奇怪,但您应该意识到这一点,以便您可以利用它,或者至少知道当您遇到它时会发生什么。在下面的示例中,我在定义sayYo()sum()函数语句之前调用它们。

示例:sample96.html

Nach dem Login kopieren

发生这种情况是因为在代码运行之前,函数语句被解释并添加到执行堆栈/上下文中。确保您在使用函数语句时意识到这一点。

定义为函数表达式的函数不会被提升。仅提升函数语句。


函数可以调用自身(又名递归)

函数调用自身是完全合法的。事实上,这经常被用在众所周知的编码模式中。在下面的代码中,我们启动countDownFrom函数,然后该函数通过函数名称countDownFrom调用自身。本质上,这会创建一个从 5 倒数到 0 的循环。

示例:sample97.html

Nach dem Login kopieren

您应该意识到,函数调用自身(也称为递归)或重复执行此操作是很自然的。


结论

函数是 JavaScript 最常用的方面之一,希望您现在对如何使用它们有了更好的了解。

Das obige ist der detaillierte Inhalt vonfunction(), das die Funktion implementiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!