2015-06-07 6 views
5

ho una funzione definita con un parametro in javascript e non so come inizializzarlo come parametro, nessuno mi aiuta. il codice è muggitocome inizializzare un parametro nella funzione javascript quando definisco la funzione

<br/>Enter a number: 
<input type="text" id="txt1" name="text1"> 
<p>Click the button to see the result</p> 
<button onclick="myFunction(5)">show result</button> 
<br/> 
<p id="demo"></p> 
<script> 
    function myFunction(param) { 
    alert(param); 
    var z = param; 
    var y = document.getElementById("txt1").value; 
    var x = +y + +z; 
    document.getElementById("demo").innerHTML = x; 
    } 
</script> 

il problema che ho è: Se invio un argomento per la funzione come <button onclick="myFunction(5)">show result</button> funziona, ma se io non mando alcun argomento non funziona e il risultato è NaN. ora voglio sapere come posso inizializzare il parametro wen definisco la funzione? come abbiamo fatto in php function myFunction(param=0)

+0

possibile duplicato di [Impostare un valore del parametro predefinito per una funzione JavaScript] (http://stackoverflow.com/questions/894860/set-a-default-parameter-value-for-a-javascript-function) –

risposta

5

Usa param = param || 0; come

function myFunction(param) { 
    param = param || 0; 
    console.log(param); 
    var z = param; 
    var y = document.getElementById("txt1").value; 
    var x = +y + +z; 
    document.getElementById("demo").innerHTML = x; 
    } 

La dichiarazione di cui sopra sta dicendo impostare param-param se non è Falsey (undefined, null, false), altrimenti impostarlo su 0.

2

dovrete fare in questo modo:

function foo(a, b) 
{ 
    a = typeof a !== 'undefined' ? a : 42; 
    ... 
} 
4

ogni volta che non inizializza un valore a un parametro javascript considererà come non definita, in modo da poter raccogliere i frutti di questo problema e farlo Mi piace:

function myFunction(param) 
    { 

     param = typeof param !== 'undefined' ? param : 0; 

    } 

spero che sarebbe utile.

1

Tutte le risposte fino ad ora controllano il valore di param per determinare se è stato impostato o meno. Nella maggior parte dei casi funziona bene, ma non copre i casi in cui in realtà si desidera passare undefined a myFunction. In particolare il modello usato spesso param = param || 0 imposterà param-0 per tutti i valori falsy (0, false, "", null, undefined) che vengono passati alla funzione. Quindi, se avete bisogno di coprire i casi come bene e se si vuole emulare il comportamento di altre lingue il più vicino possibile, è necessario controllare arguments se param è stato effettivamente impostato:

function myFunction(param) { 
    if (arguments.length === 0) { 
     param = 0; 
    } 
    console.log(param); 
} 

myFunction(0); //0 
myFunction(1); //1 
myFunction(""); //"" 
myFunction(null); //null 
myFunction(undefined); //undefined 
myFunction(false); //false 
myFunction(); //0 
+0

base eccellente. funziona alla grande –

Problemi correlati