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
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
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)
0
""
NaN
false
null
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;
}
Esto es mejor que la respuesta de @ Nick porque estás usando 'var'. –
@Jacob - Se define como un parámetro :) –
@Nick, Sí, supongo que tenía miedo de una anulación de variable global. –
Se puede establecer un valor predeterminado en el interior, así:
function byMonth(export) {
export = export || 0;
//your code
}
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
.
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