Ho una funzione che voglio passare un argomento a, però io voglio che di default a 0.funzione Javascript preimpostare
E 'possibile todo è simile a PHP, come:
function byMonth(export=0) {
Molte grazie
Ho una funzione che voglio passare un argomento a, però io voglio che di default a 0.funzione Javascript preimpostare
E 'possibile todo è simile a PHP, come:
function byMonth(export=0) {
Molte grazie
Non fare questo
function byMonth(export){
export = export || 0;
alert(export);
}
Edit:
La precedente versione ha un bug in silenzio, me ne vado solo come un esempio di ciò che non fare.
Il problema è, si supponga di passare la funzione l'argomento false
, prenderà il valore predefinito anche se in realtà è stato chiamato con un argomento.
Tutti questi altri parametri saranno ignorati e il difetto saranno utilizzati (per JavaScript concetto di falsy)
0
""
NaN
false
null
undefined
Un modo più sicuro per verificare la presenza del parametro è:
function byMonth(export){
if(export === undefined) export = 0;
}
Edit 2:
La funzione precedente non è 100 % sicuro dal momento che qualcuno (probabilmente un idiota) potrebbe definire undefined
facendo in modo che la funzione si comporti in modo imprevisto. Si tratta di una finale, funziona ovunque, versione a prova di proiettile:
function byMonth(export){
var undefined;
if(export === undefined) export = 0;
}
In realtà è meglio della risposta di @ Nick perché stai usando 'var'. –
@Jacob - È definito come un parametro :) –
@Nick, Sì, credo di aver paura di un override variabile globale. –
È possibile impostare un valore predefinito dentro, in questo modo:
function byMonth(export) {
export = export || 0;
//your code
}
Sono più di 6 anni di ritardo, ma ora con ES6, c'è un'altra soluzione. Pablo Fernandez ha detto che è possibile impostare undefined
ad un valore e si dovrebbe verificare in questo modo:
function byMonth(export){
var undefined;
if(export === undefined) export = 0;
}
Bene, ora si può fare questo:
function byMonth(export){
if(export === void 0) export = 0;
}
void 0
restituisce sempre il "vero" undefined
.
Non utilizzare 'export' come identificatore perché è una * parola riservata in futuro * e alcune implementazioni generano un' SyntaxError' quando tali parole chiave vengono utilizzate come identificatori, l'implementazione di Safari è un buon esempio. – CMS