2010-09-03 9 views
5

Tengo una función que quiero pasar un argumento a, sin embargo yo quiero que por defecto a 0.variable de la función Javascript preestablecer

¿Es posible que TODO similar a PHP, como:

function byMonth(export=0) { 

Muchas gracias

+2

No use 'export' como identificador porque es una * futura palabra reservada *, y algunas implementaciones arrojarán un' SyntaxError' cuando esas palabras clave se usan como identificadores, la implementación de Safari es un buen ejemplo. – CMS

Respuesta

11

Dont hacer esto

function byMonth(export){ 
    export = export || 0; 
    alert(export); 
} 

Editar:

La versión anterior tiene un error en silencio, yo estoy dejando sólo como un ejemplo de lo que NO hay que hacer .

El problema es que, supongamos que pasa la función al argumento false, tomará el valor predeterminado aunque en realidad lo haya llamado con un argumento.

Todos estos otros parámetros serán ignorados y serán utilizados por defecto (a causa de JavaScript concepto de Falsy)

  • El número cero 0
  • Una cadena vacía ""
  • NaN
  • false
  • null
  • y (obviamente) undefined

Una forma más segura para comprobar la presencia del parámetro es:

function byMonth(export){ 
     if(export === undefined) export = 0; 
    } 

Editar 2:

La función anterior no es 100 % seguro ya que alguien (un idiota probablemente) podría definir undefined haciendo que la función se comporte inesperadamente. Se trata de una versión final, que funciona en cualquier lugar de balas:

function byMonth(export){ 
    var undefined; 
    if(export === undefined) export = 0; 
} 
+0

Esto es mejor que la respuesta de @ Nick porque estás usando 'var'. –

+2

@Jacob - Se define como un parámetro :) –

+0

@Nick, Sí, supongo que tenía miedo de una anulación de variable global. –

4

Se puede establecer un valor predeterminado en el interior, así:

function byMonth(export) { 
    export = export || 0; 
    //your code 
} 
0

estoy más de 6 años de retraso, pero ahora con ES6, no hay otra solución. Pablo Fernández dijo que se puede establecer undefined a un valor y se debe comprobar de esta manera:

function byMonth(export){ 
    var undefined; 
    if(export === undefined) export = 0; 
} 

Bueno, ahora usted puede hacer esto:

function byMonth(export){ 
    if(export === void 0) export = 0; 
} 

void 0 da siempre como resultado el "verdadero" undefined.

Cuestiones relacionadas