Maison > interface Web > js tutoriel > le corps du texte

Une introduction à la différence entre var foo = function () {} et function foo() lors de la définition d'une fonction en JavaScript (tutoriel détaillé)

亚连
Libérer: 2018-06-02 11:59:51
original
1568 Les gens l'ont consulté

Cet article présente principalement la différence entre var foo = function () {} et function foo() lors de la définition d'une fonction en JavaScript. Les amis qui en ont besoin peuvent s'y référer

Un jour où j'écrivais. code, j'ai soudainement eu cette question, résumons une vague de

Le comportement de « levage » des déclarations de fonctions et de variables JavaScript

En termes simples, si nous utilisons des fonctions anonymes

var a = {}

De cette façon, la déclaration de variable a sera "avancée" après la compilation, mais son affectation (c'est-à-dire a) ne sera pas avancée.

C'est-à-dire que la fonction anonyme n'est initialisée que lorsqu'elle est appelée.

Si vous utilisez

function a () {};

, la déclaration de la fonction et son affectation seront avancées après compilation.

C'est-à-dire que le prétraitement du processus de déclaration de fonction est terminé avant que l'ensemble du programme ne soit exécuté, donc tant qu'il est dans la même portée, il est accessible, même s'il est appelé avant la définition .

En regardant un exemple

function hereOrThere() { //function statement
  return 'here';
}
console.log(hereOrThere()); // alerts 'there'
function hereOrThere() {
  return 'there';
}
Copier après la connexion

nous constaterons que l'instruction alert(hereOrThere) sera alert('there') exécutée ! Le comportement ici est en fait très inattendu.La raison principale est le comportement "précoce" des déclarations de fonctions JavaScript. En bref, JavaScript nous permet d'utiliser des variables et des fonctions avant qu'elles ne soient déclarées, et la deuxième définition remplace la première. En d'autres termes, une fois le code ci-dessus compilé, il équivaut à

function hereOrThere() { //function statement
 return 'here';
}
function hereOrThere() {//申明前置了,但因为这里的申明和赋值在一起,所以一起前置
 return 'there';
}
console.log(hereOrThere()); // alerts 'there'
Copier après la connexion

Le comportement que nous attendons

var hereOrThere = function () { // function expression
  return 'here';
};
console.log(hereOrThere()); // alerts 'here'
hereOrThere = function () {
  return 'there';
};
Copier après la connexion

Une fois ce programme compilé, il équivaut à :

var hereOrThere;//申明前置了
hereOrThere = function() { // function expression
 return 'here';
};
console.log(hereOrThere()); // alerts 'here'
hereOrThere = function() {
 return 'there';
};
Copier après la connexion

Ci-dessus, je l'ai compilé pour tout le monde. J'espère qu'il sera utile à tout le monde à l'avenir.

Articles connexes :

Méthode Vue2.0 pour implémenter les conseils d'invite de navigation dans les pages

vue2.0 change de style en fonction de la valeur d'état Afficher méthode

Comment implémenter une application de prise de notes à l'aide de Vuex

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!