Heim Web-Frontend js-Tutorial JS特殊函数(Function()构造函数、函数直接量)区别介绍_基础知识

JS特殊函数(Function()构造函数、函数直接量)区别介绍_基础知识

May 16, 2016 pm 05:33 PM
function 构造函数

函数定义
函数是由这样的方式进行声明的:关键字 function、函数名、一组参数,以及置于括号中的待执行代码。
函数的构造语法有这三种:
Js代码
复制代码 代码如下:

1.function functionName(arg0, arg1, ... argN) { statements }//function语句
2.var function_name = new Function(arg1, arg2, ..., argN, function_body);//Function()构造函数
3.var func = function(arg0, arg1, ... argN) { statements };//函数直接量

示例:
Js代码
复制代码 代码如下:

1.function f(x){return x*x};//function语句
2.var f = new Function("x","return x*x;");//Function()构造函数
3.var f = function(x){return x*x;};//函数直接量

如果函数无明确的返回值,或调用了没有参数的 return 语句,那么它真正返回的值是 undefined。

Function()构造函数
函数实际上是功能完整的对象 。Function类可以表示开发者定义的任何函数。用Function类直接创建函数的语法如下:
var function_name = new function(arg1, arg2, ..., argN, function_body)
在上面的形式中,每个 arg 都是一个参数,最后一个参数是函数主体(要执行的代码)。这些参数必须是字符串。
var sayHi = new Function("sName", "sMessage", "alert('Hello ' + sName + sMessage);");
sayHi("jzj,", "你好!");//Hello jzj,你好!
函数名只是指向函数的变量,那么可以把函数作为参数传递给另一个函数吗?答案是可以的,请看:
Js代码
复制代码 代码如下:

function callAnotherFunc(fnFunction, vArgument) {
fnFunction(vArgument);
}
var doAdd = new Function("iNum", "alert(iNum + 10)");
callAnotherFunc(doAdd, 10); //输出 "20"

注意:尽管可以使用 Function 构造函数创建函数,但最好不要使用它,因为用它定义函数比用传统方式要慢得多。不过,所有函数都应看作 Function 类的实例 。
如果你定义的函数没有参数,那么可以只需给构造函数传递一个字符串(即函数的主体)即可。
注意:传递给构造函数Function()的参数中没有一个用于说明它要创建的函数名。用Function()构造函数创建的未命名函数有时被称为“匿名函数”。
Function()函数允许我们动态地建立和编译一个函数,它不会将我们限制在function语句预编译的函数体中。
函数直接量
函数直接量是一个表达式,它可以定义匿名函数。函数直接量的语法和function语句非常相似,只不过它被用作表达式,而不是用作语句,而且也无需指定函数名。语法:
Js代码
复制代码 代码如下:

var func = function(arg0, arg1, ... argN) { statements };//函数直接量

虽然函数直接量创建的是未命名函数,但是它的语法也规定它可以指定函数名,这在编写调用自身的递归函数时非常有用,例如:
Js代码
复制代码 代码如下:

var f = function fact(x) {
if (x return 1;
} else {
return x * fact(x - 1);
}
};

注:它并没有真正创建一个名为fact()函数,只是允许函数体用这个名字来引用自身。JavaScript1.5之前的版本中没有正确实现这种命名的函数直接量。
函数引用
函数名并没有什么实质意义,它不过是用来保存函数的变量名字,可以将这个函数赋给其他变量,它仍然会以相同方式起作用:
Js代码
复制代码 代码如下:

function square(x){return x*x;}
var a = square;
var b = a(5);//b 为25

这有点像C++中的函数指针了。
Function()构造函数和函数直接量差别
Function()构造函数和函数直接量之间的差别有一点就是:使用构造函数Function()创建的函数不使用词法作用域,相反的,它们总是被顶级函数来编译,如:
Js代码
复制代码 代码如下:

var y = "global";
function constructFunction() {
var y = "local";
//Function()构造函数
return new Function("return y;");//不使用局部作用域
}
function constFunction() {
var y = "local";
//函数直接量
var f = function () {
return y;//使用局部作用域
};
return f;
}
//显示 global,因为Function()构造函数返回的函数并不使用局部作用域
alert(constructFunction()());
//显示 lobal,因为函数直接量返回的函数并使用局部作用域
alert(constFunction()());
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was bedeutet Funktion? Was bedeutet Funktion? Aug 04, 2023 am 10:33 AM

Funktion bedeutet Funktion. Es handelt sich um einen wiederverwendbaren Codeblock mit bestimmten Funktionen. Er kann Eingabeparameter akzeptieren, bestimmte Operationen ausführen und Ergebnisse zurückgeben. Code, um die Wiederverwendbarkeit und Wartbarkeit des Codes zu verbessern.

Was ist der Zweck der Funktion „enumerate()' in Python? Was ist der Zweck der Funktion „enumerate()' in Python? Sep 01, 2023 am 11:29 AM

In diesem Artikel lernen wir die Funktion enumerate() und den Zweck der Funktion „enumerate()“ in Python kennen. Was ist die Funktion enumerate()? Die Funktion enumerate() von Python akzeptiert eine Datensammlung als Parameter und gibt ein Aufzählungsobjekt zurück. Aufzählungsobjekte werden als Schlüssel-Wert-Paare zurückgegeben. Der Schlüssel ist der Index, der jedem Element entspricht, und der Wert sind die Elemente. Syntax enumerate(iterable,start) Parameter iterable – Die übergebene Datensammlung kann als Aufzählungsobjekt namens iterablestart zurückgegeben werden – Wie der Name schon sagt, wird der Startindex des Aufzählungsobjekts durch start definiert. wenn wir es ignorieren

Detaillierte Erläuterung der Rolle und Funktion der MySQL.proc-Tabelle Detaillierte Erläuterung der Rolle und Funktion der MySQL.proc-Tabelle Mar 16, 2024 am 09:03 AM

Detaillierte Erläuterung der Rolle und Funktion der MySQL.proc-Tabelle. MySQL ist ein beliebtes relationales Datenbankverwaltungssystem. Wenn Entwickler MySQL verwenden, müssen sie häufig gespeicherte Prozeduren erstellen und verwalten. Die MySQL.proc-Tabelle ist eine sehr wichtige Systemtabelle. Sie speichert Informationen zu allen gespeicherten Prozeduren in der Datenbank, einschließlich des Namens, der Definition, der Parameter usw. der gespeicherten Prozeduren. In diesem Artikel erklären wir ausführlich die Rolle und Funktionalität der MySQL.proc-Tabelle

Konstruktor in Python Konstruktor in Python Sep 02, 2023 pm 04:29 PM

In Python verfügt jede Klasse über einen Konstruktor, bei dem es sich um eine spezielle Methode handelt, die innerhalb der Klasse angegeben wird. Der Konstruktor/Initialisierer wird automatisch aufgerufen, wenn ein neues Objekt für die Klasse erstellt wird. Wenn ein Objekt initialisiert wird, weist der Konstruktor den Datenelementen in der Klasse Werte zu. Es ist nicht erforderlich, den Konstruktor explizit zu definieren. Um jedoch einen Konstruktor zu erstellen, müssen wir die folgenden Regeln befolgen: Eine Klasse darf nur einen Konstruktor haben. Der Konstruktorname muss __init__ sein. Konstruktoren müssen mithilfe von Instanzeigenschaften definiert werden (geben Sie einfach das Schlüsselwort self als erstes Argument an). Es kann kein Wert außer None zurückgegeben werden. Syntax classA():def__init__(self):pass Beispiel Betrachten Sie das folgende Beispiel und

Die Verwendung und Funktion der Vue.use-Funktion Die Verwendung und Funktion der Vue.use-Funktion Jul 24, 2023 pm 06:09 PM

Verwendung und Funktion von Vue.Funktion verwenden Vue ist ein beliebtes Frontend-Framework, das viele nützliche Features und Funktionen bietet. Eine davon ist die Vue.use-Funktion, die es uns ermöglicht, Plugins in Vue-Anwendungen zu verwenden. In diesem Artikel werden die Verwendung und Funktion der Vue.use-Funktion vorgestellt und einige Codebeispiele bereitgestellt. Die grundlegende Verwendung der Vue.use-Funktion ist sehr einfach. Rufen Sie sie einfach auf, bevor Vue instanziiert wird, und übergeben Sie das Plugin, das Sie verwenden möchten, als Parameter. Hier ist ein einfaches Beispiel: //Plugin vorstellen und verwenden

C++-Syntaxfehler: Dieselbe Konstruktorsignatur kommt mehrmals vor, wie kann man ihn lösen? C++-Syntaxfehler: Dieselbe Konstruktorsignatur kommt mehrmals vor, wie kann man ihn lösen? Aug 22, 2023 pm 04:49 PM

C++ ist eine leistungsstarke Programmiersprache, bei der Verwendung treten jedoch zwangsläufig verschiedene Probleme auf. Unter diesen ist das mehrfache Vorkommen derselben Konstruktorsignatur ein häufiger Syntaxfehler. In diesem Artikel werden die Ursachen und Lösungen für diesen Fehler erläutert. 1. Fehlerursache In C++ wird der Konstruktor verwendet, um die Datenelemente des Objekts beim Erstellen des Objekts zu initialisieren. Wenn jedoch dieselbe Konstruktorsignatur in derselben Klasse definiert ist (d. h. die Parametertypen und die Reihenfolge sind gleich), kann der Compiler nicht bestimmen, welcher Konstruktor aufgerufen werden soll, was zu einem Kompilierungsfehler führt. Zum Beispiel,

Funktion „clearstatcache()' in PHP Funktion „clearstatcache()' in PHP Sep 07, 2023 am 09:33 AM

Mit der Funktion „clearstatcache()“ wird der Dateistatus-Cache geleert. PHP speichert die von den folgenden Funktionen zurückgegebenen Informationen zwischen: −stat()lstat()file_exists()is_writable()is_readable()is_executable()is_file()is_dir()filegroup()fileowner()filesize()filetype()fileperms() Was zu tun Um eine bessere Leistung zu erzielen. Syntax voidclearstatecache() Parameter NA Rückgabewert clearstatcache(

file_exists()-Funktion in PHP file_exists()-Funktion in PHP Sep 14, 2023 am 08:29 AM

Die Methode file_exists prüft, ob eine Datei oder ein Verzeichnis existiert. Es akzeptiert als Argument den Pfad der zu überprüfenden Datei oder des Verzeichnisses. Hier erfahren Sie, wofür es verwendet wird: Es ist nützlich, wenn Sie wissen müssen, ob eine Datei vorhanden ist, bevor Sie sie verarbeiten. Auf diese Weise können Sie beim Erstellen einer neuen Datei mithilfe dieser Funktion feststellen, ob die Datei bereits vorhanden ist. Syntax file_exists($file_path) Parameter file_path – Legen Sie den Pfad der Datei oder des Verzeichnisses fest, dessen Existenz überprüft werden soll. Erforderlich. Gibt die Methode file_exists() zurück. Gibt „TrueFalse“ zurück, wenn die Datei oder das Verzeichnis existiert, wenn die Datei oder das Verzeichnis nicht existiert. Beispiel: Lassen Sie uns eine Prüfung für die Datei „candidate.txt“ sehen und auch, ob die Datei vorhanden ist

See all articles