Pregunta Verificación de JavaScript si el valor solo está indefinido, nulo o falso


Además de crear una función, ¿hay una manera más corta de verificar si un valor es undefined,null o false solo en JavaScript?

La siguiente declaración if es equivalente a if(val===null && val===undefined val===false) El código funciona bien, estoy buscando un equivalente más corto.

if(val==null || val===false){
  ;
}

Encima val==null evalúa a verdadero tanto cuando val=undefined o val=null.

Estaba pensando en usar operadores bit a bit, o algún otro truco.


32
2017-07-26 21:31


origen


Respuestas:


Bueno, siempre puedes "rendirte" :)

function b(val){
    return (val==null || val===false);
}

29
2017-07-26 22:04



La mejor manera de hacerlo, creo, es:

if(val != true){
//do something
} 

Esto será cierto si val es falso, NaN o indefinido.


10
2017-10-16 23:15



Una forma de hacerlo es así:

var acceptable = {"undefined": 1, "boolean": 1, "object": 1};

if(!val && acceptable[typeof val]){
  // ...
}

Creo que minimiza la cantidad de operaciones dadas tus restricciones y hace que el cheque sea rápido.


2
2018-01-14 07:43



Creo que lo que estás buscando es !!val==false que se puede activar !val (aún más corto):

Lo ves:

function checkValue(value) {
    console.log(!!value);
}

checkValue(); // false
checkValue(null); // false
checkValue(undefined); // false
checkValue(false); // false
checkValue(""); // false

checkValue(true); // true
checkValue({}); // true
checkValue("any string"); // true

Eso funciona volteando el valor usando el ! operador.

Si volteas null una vez por ejemplo, así:

console.log(!null) // that would output --> true

Si lo volteas dos veces así:

console.log(!!null) // that would output --> false

Lo mismo con undefined o false.

Tu codigo:

if(val==null || val===false){
  ;
}

entonces se convertiría en:

if(!val) {
  ;
}

Eso funcionaría para todos los casos, incluso cuando hay una cadena pero su longitud es cero. Ahora si quieres que también funcione para el número 0 (que se convertiría en false si fue doblemente volteado) entonces tu if se convertiría en:

if(!val && val !== 0) {
  // code runs only when val == null, undefined, false, or empty string ""
}

2
2017-12-29 17:22



único atajo para algo como esto que yo sepa es

var val;
(val==null || val===false) ? false: true;

1
2017-07-26 21:44



Otra solución:

Según el documento, el objeto booleano devolverá verdadero si el valor no es 0, indefinido, nulo, etc. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean

Si se omite el valor o es 0, -0, nulo, falso, NaN, indefinido o la cadena vacía (""), el objeto tiene un valor inicial de falso.

Asi que

if (Boolean (val))
{
//ejecutable...
}

1
2017-12-17 21:44



Boolean (val) === falso. Esto funcionó para mí para verificar si el valor era falso.


0
2018-03-12 18:00



Utilizando ? es mucho más limpio

var ? function_if_exists() : function_if_doesnt_exist();

0
2018-06-30 09:33