JS特殊函数(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()());

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Fonction signifie fonction. Il s'agit d'un bloc de code réutilisable avec des fonctions spécifiques. C'est l'un des composants de base d'un programme. Il peut accepter des paramètres d'entrée, effectuer des opérations spécifiques et renvoyer des résultats. code pour améliorer la réutilisabilité et la maintenabilité du code.

Dans cet article, nous découvrirons la fonction enumerate() et le but de la fonction « enumerate() » en Python. Qu'est-ce que la fonction enumerate() ? La fonction enumerate() de Python accepte une collection de données comme paramètre et renvoie un objet d'énumération. Les objets d'énumération sont renvoyés sous forme de paires clé-valeur. La clé est l'index correspondant à chaque élément, et la valeur est les éléments. Syntaxe enumerate(iterable,start) Paramètres iterable - Les données transmises dans la collection peuvent être renvoyées sous forme d'objet d'énumération, appelé iterablestart - Comme son nom l'indique, l'index de départ de l'objet d'énumération est défini par start. si nous ignorons

Explication détaillée du rôle et de la fonction de la table MySQL.proc MySQL est un système de gestion de bases de données relationnelles populaire. Lorsque les développeurs utilisent MySQL, ils impliquent souvent la création et la gestion de procédures stockées (StoredProcedure). La table MySQL.proc est une table système très importante. Elle stocke les informations relatives à toutes les procédures stockées dans la base de données, y compris le nom, la définition, les paramètres, etc. Dans cet article, nous expliquerons en détail le rôle et les fonctionnalités de la table MySQL.proc

En Python, chaque classe possède un constructeur, qui est une méthode spéciale spécifiée à l’intérieur de la classe. Le constructeur/initialiseur sera appelé automatiquement lorsqu'un nouvel objet est créé pour la classe. Lorsqu'un objet est initialisé, le constructeur attribue des valeurs aux données membres de la classe. Il n'est pas nécessaire de définir explicitement le constructeur. Mais pour créer un constructeur, nous devons suivre les règles suivantes : - Pour une classe, il est permis de n'avoir qu'un seul constructeur. Le nom du constructeur doit être __init__. Les constructeurs doivent être définis à l'aide de propriétés d'instance (spécifiez simplement le mot-clé self comme premier argument). Il ne peut renvoyer aucune valeur sauf Aucune. Syntaxe classA():def__init__(self):pass Exemple Considérons l'exemple suivant et

Utilisation et fonction de Vue.use Function Vue est un framework frontal populaire qui fournit de nombreuses fonctionnalités et fonctions utiles. L'une d'elles est la fonction Vue.use, qui nous permet d'utiliser des plugins dans les applications Vue. Cet article présentera l'utilisation et la fonction de la fonction Vue.use et fournira quelques exemples de code. L'utilisation de base de la fonction Vue.use est très simple, il suffit de l'appeler avant que Vue ne soit instanciée, en passant le plugin que vous souhaitez utiliser comme paramètre. Voici un exemple simple : //Introduire et utiliser le plug-in

Le C++ est un langage de programmation puissant, mais il est inévitable de rencontrer divers problèmes lors de son utilisation. Parmi eux, la même signature de constructeur apparaissant plusieurs fois est une erreur de syntaxe courante. Cet article explique les causes et les solutions à cette erreur. 1. Cause de l'erreur En C++, le constructeur est utilisé pour initialiser les données membres de l'objet lors de la création de l'objet. Cependant, si la même signature de constructeur est définie dans la même classe (c'est-à-dire que les types et l'ordre des paramètres sont identiques), le compilateur ne peut pas déterminer quel constructeur appeler, ce qui provoque une erreur de compilation. Par exemple,

La fonction clearstatcache() est utilisée pour vider le cache d'état des fichiers. PHP met en cache les informations renvoyées par les fonctions suivantes -stat()lstat()file_exists()is_writable()is_readable()is_executable()is_file()is_dir()filegroup()fileowner()filesize()filetype()fileperms() Quoi à faire Pour offrir de meilleures performances. Syntaxe voidclearstatecache() Paramètre NA Valeur de retour clearstatcache(

La méthode file_exists vérifie si un fichier ou un répertoire existe. Il accepte comme argument le chemin du fichier ou du répertoire à vérifier. Voici à quoi il sert : c'est utile lorsque vous avez besoin de savoir si un fichier existe avant de le traiter. De cette façon, lors de la création d'un nouveau fichier, vous pourrez utiliser cette fonction pour savoir si le fichier existe déjà. Syntaxe file_exists($file_path) Paramètres file_path - Définit le chemin du fichier ou du répertoire dont l'existence doit être vérifiée. Requis. Renvoie la méthode file_exists(). Renvoie TrueFalse si le fichier ou le répertoire existe, si le fichier ou le répertoire n'existe pas. Exemple voyons une vérification du fichier "candidate.txt" et même si le fichier
