2012-07-12 20 views
22

llamada a una función JSComprobar si el argumento se pasa a una función Java Script

alertStatement() 

Definición de la función

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

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

Ambas declaraciones que trabajan bien en Windows Env con Tomcat pero ninguno de ellos ejecutarlo en Producción (servidor Linux) ¿Hay alguna otra forma de comparar variables para que funcione?

Lo tengo trabajo mediante el siguiente código java script: Ahora el siguiente código no muestra el estallido de alerta hasta

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

Así que al fin no definido trabajado para mí, por alguna razón comparación nula no funcionaba

+0

¿Qué síntoma ves que te hace pensar que hay un problema? –

+0

¿Puedes definir "trabajar bien"? ¿Qué esperarías que sucediera? – PPvG

+0

Lo siento por la confusión, cuando llamo a la función en Windows sin el parámetro, ambas instrucciones de alerta no aparecen. En Linux, puedo ver aparecer los dos cuadros de alerta. – KAPILP

Respuesta

50

Para ver si el argumento tiene un valor utilizable, simplemente verifique si el argumento no está definido. Esto tiene dos propósitos. Se comprueba no sólo si se pasa algo, sino también si tiene un valor utilizable:

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

Algunas personas prefieren utilizar typeof como esto:

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

null es un valor específico. undefined es lo que será si no se pasa.

Si solo quiere saber si se pasó algo o no y no le importa cuál es su valor, puede usar arguments.length.

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

'arguments.length === 0' indica que no se pasó un argumento. El código actual ejecutará la primera rama cuando se llame a través de 'alertStatement (null)' o 'alertStatement (undefined)' porque 'null == undefined'. –

+3

@Mike - ¿Qué problema estás tratando de resolver que mi solución no resuelve? No entiendo el motivo de la votación negativa. Estoy probando si el argumento del enlace fue pasado con un valor legítimo o no. – jfriend00

+1

Para la situación específica del OP 'arguments.length' funcionaría bien, pero esta es una solución más general que puede probar si un argumento específico tiene un buen valor y no necesita mantenimiento si usted o algún otro codificador agrega un argumento en algún momento posterior . Esto también funciona bien, así que todavía no estoy seguro de por qué el voto negativo. – jfriend00

Cuestiones relacionadas