2010-01-29 8 views
7

Je n'utilise que jQuery pour écrire du code JavaScript. Une chose qui me trouble est ces deux approches de fonctions d'écriture,Quelle est la différence entre ces deux fonctions/approches?

Première approche

vote = function (action,feedbackId,responseDiv) 
{ 
    alert('hi'); 
    return feedbackId; 
} 

Deuxième approche

function vote(action, feedbackId,responseDiv) 
{ 
    alert('hi'); 
    return feedbackId; 
} 

Quelle est la différence entre les deux et pourquoi un utiliser la première approche ou la deuxième approche?

+3

À moins 'vote' a déjà été déclaré,' vote = function (action, feed ... 'devrait être' var vote = fonction (action, feed ... '-il est une mauvaise pratique d'utiliser des globales implicites –

+1

duplication possible de [JavaScript: var functionName = fonction() {} vs fonction nomFonction() {}] (http://stackoverflow.com/questions/336859/javascript-var-functionname-function-vs-function-functionname) –

Répondre

8

La première est une expression de fonction affectée à la variable vote, la seconde est une déclaration de fonction .

La principale différence est que les instructions de fonction sont évaluées au moment de l'analyse, elles sont disponibles avant sa déclaration lors de l'exécution.

Voir aussi:

+0

Merci CMS: :) :) –

+0

Le premier lien est mort. –

+0

@PlatinumAzure, merci d'avoir mis à jour le lien vers l'article. – CMS

0

La première est une expression de fonction,

var calculateSum = function(a, b) { return a + b; } 

alert(calculateSum(5, 5)); // Alerts 10 

Le second est une déclaration de fonction ordinaire.

6
function myFunction() {} 

... est appelée une "déclaration de fonction".

var myFunction = function() {}; 

... est appelée "expression de fonction".

Ils sont très similaires; cependant:

  • La déclaration de fonction peut être déclarée après il est référencé, alors que l'expression de fonction doit être déclarée avant d'être référencé:

    // OK 
    myFunction(); 
    function myFunction() {} 
    
    // Error 
    myFunction(); 
    var myFunction = function() {}; 
    
  • Depuis une expression de fonction est une déclaration, il devrait être suivi d'un point-virgule.

Voir Function constructor vs. function declaration vs. function expression au Mozilla Developer Centre pour plus d'informations.

0

La syntaxe de déclaration de fonction ne peut pas être utilisée dans une instruction de blocage.

juridique:

function a() { 
    function b() { 

    } 
} 

illégale:

function a() { 
    if (c) { 
     function b() { 

     } 
    } 
} 

Vous pouvez le faire si:

function a() { 
    var b; 
    if (c) { 
     b = function() { 

     }; 
    } 
} 
Questions connexes