2012-07-12 11 views
22

chiamata a una funzione JSVerificare se l'argomento è passato a una funzione Java Script

alertStatement() 

Funzione Definizione

functio alertStatement(link){ 
if (link){ 
      alert('A');  
    } 

if(link!=null){ 
     alert('B');  
    } 
} 

Entrambe queste affermazioni che lavorano bene in Windows Env con Tomcat ma nessuno di loro eseguilo su Production (server Linux) C'è qualche altro modo per confrontare le variabili per farlo funzionare?

ho ottenuto che funziona utilizzando il seguente codice java script: Ora il seguente codice non mostra la comparsa di allarme fino

functio alertStatement(link){ 
if (link!==undefined){ 
    alert('A');  
    } 

Così, alla fine non definito lavorato per me, per qualche ragione il confronto nullo non ha funzionato

+0

Quali sintomi vedi che ti fanno pensare che ci sia un problema? –

+0

Puoi definire "funzionante bene"? Cosa ti aspetti che accada? – PPvG

+0

Ci scusiamo per la confusione, quando chiamo la funzione su Windows senza il parametro allora entrambe le istruzioni di avviso non pop-up. In Linux posso vedere apparire entrambe le caselle di avviso. – KAPILP

risposta

50

Per verificare se l'argomento ha un valore utilizzabile, è sufficiente verificare se l'argomento non è definito. Questo ha due scopi. Esso controlla non solo se è stata approvata qualcosa, ma anche se ha un valore d'uso:

function alertStatement(link) { 
    if (link !== undefined) { 
     // argument passed and not undefined 
    } else { 
     // argument not passed or undefined 
    } 
} 

Alcune persone preferiscono utilizzare typeof come questo:

function alertStatement(link) { 
    if (typeof link !== "undefined") { 
     // argument passed and not undefined 
    } else { 
     // argument not passed or undefined 
    } 
} 

null è un valore specifico. undefined è quello che sarà se non viene passato.

Se si desidera sapere se è stato passato o meno qualcosa e non importa quale sia il suo valore, è possibile utilizzare arguments.length.

function alertStatement(link) { 
    if (arguments.length) { 
     // argument passed 
    } else { 
     // argument not passed 
    } 
} 
+5

'arguments.length === 0' indica che non è stato passato un argomento. Il codice corrente eseguirà il primo ramo quando viene chiamato tramite 'alertStatement (null)' o 'alertStatement (undefined)' perché 'null == undefined'. –

+3

@ Mike - quale problema stai cercando di risolvere che la mia soluzione non risolva? Non capisco il motivo per il downvote. Sto testando se l'argomento link è stato passato con un valore legittimo o meno. – jfriend00

+1

Per la situazione specifica dell'OP 'arguments.length' funzionerebbe bene, ma questa è una soluzione più generale che può verificare se qualche argomento specifico ha un buon valore e non ha bisogno di manutenzione se tu o qualche altro programmatore aggiungi un argomento qualche tempo dopo . Anche questo funziona bene quindi non sono ancora sicuro del perché del downvote. – jfriend00

Problemi correlati