Qual è la differenza tra le due sintassi di sotto? [chiuso]

1

1.

 $(function () {
       function foo() { return true; }
       log(bar());                        // getting error
       var bar = function() { return true; };   
  });

2.

$(function () {
        function foo() { return true; }
        log(bar());                        // working 
        function bar() { return true; };  
});

in snippet sopra log è la mia funzione personalizzata per registrare il risultato.

    
posta Hari 11.06.2012 - 08:02
fonte

3 risposte

8

Nel secondo, la funzione bar() è issata in cima al tuo blocco funzione (tutte le funzioni dichiarate in un blocco usando questa sintassi sono issate in cima al blocco) e quindi esiste prima di chiamarla in log(bar()) . Nel primo, la barra delle variabili non è impostata sulla funzione fino a dopo la chiamata a log(bar()) .

    
risposta data 11.06.2012 - 08:28
fonte
0

Nella prima barra del blocco del codice è una variabile di funzione che obbedisce all'ambito. Nel secondo blocco di codice è una funzione dichiarata globalmente perché non è inserita in una variabile con scope.

    
risposta data 11.06.2012 - 12:45
fonte
-1

Nel primo, hai chiamato una variabile come funzione.

long(bar);
var bar=function() {return true;};

prova questo nel primo.

    
risposta data 11.06.2012 - 08:24
fonte

Leggi altre domande sui tag