2012-07-27 22 views
6

c'ho codice JavaScript come questo =>funzione anonima non restituisce sempre un valore

(function(){ 
    document.getElementById("element").onclick = function(){ 
     var r = confirm("Are you sure ?"); 
     if (r){ 
      return true; 
     } else { 
      return false; 
     } 
    } 
})(); 

questo script funziona, ma solo a me dà notifica relativa Attenzione Strict che funzione anonima non lo fa restituire sempre un valore

Sono interessato a cosa significa, come posso evitare questo e provocherà qualche problema? Per favore qualche idea? grazie :)

risposta

8

Non è a causa della funzione anonima, è perché il else con quello return è ridondante. Non è necessario poiché il ritorno esce dalla funzione, se l'istruzione if non è vera, verrà eseguito il valore predefinito return.

(function(){ 
    document.getElementById("element").onclick = function(){ 
     var r = confirm("Are you sure ?"); 
     if (r){ 
      return true; 
     } 
     return false; 
    } 
})(); 

Edit:

Come nebulose dicono che questo può essere fatto ancora più breve:

(function(){ 
    document.getElementById("element").onclick = function(){ 
     return confirm("Are you sure ?"); 
    } 
})(); 
+0

'conferma di ritorno ("Sei sicuro?");' Avrà lo stesso effetto, no? – nebulae

+0

Sì, volevo solo mostrare il motivo dell'avviso. – elclanrs

+0

quindi è un avviso perché in altro "ritorno" non è comune, sì? – tnanoba

6

In realtà il strict warning si stanno ottenendo a causa della strict mode attivato in voi lo script, ma se " usare rigorosamente "non viene utilizzato nella sceneggiatura, quindi penso, come hai detto nel commento che stai usando Komodo IDE e molto probabilmente tu hanno installato Firefox Extension for Debugging che è necessario per supportare il componente lato browser del debug di JavaScript.

Se è così, ha alcune impostazioni che è possibile abilitare o disabilitare. Per disabilitare strict mode warnings, vai su Modifica menu> Preferenze> Javascript (dalla categoria) e deseleziona Abilita messaggi di avviso rigoroso, il gioco è fatto. Ma usare strict mode è una buona pratica di programmazione. Di seguito è riportato uno screenshot per aiutarvi a

enter image description here

+2

Mentre i nomi sono un po' confusi , I "messaggi di avvertimento severi" di Komodo non hanno alcuna connessione con la modalità rigorosa. Sono due cose differenti. La modalità rigorosa cambia effettivamente la semantica del tuo codice. Gli avvertimenti severi di Komodo sono semplicemente degli avvertimenti extra su cose come questa; questi avvisi possono essere applicati a qualsiasi codice, indipendentemente dal fatto che utilizzi la modalità rigorosa o meno. –

Problemi correlati