A continuación se muestra un fragmento de código, donde recuperamos un valor de formulario. Antes de continuar con el procesamiento, verifique si el valor no es nulo.
var val = document.FileList.hiddenInfo.value;
alert("val is " + val);  // this prints null which is as expected
if (val != null)
{
   alert("value is "+val.length); // this returns 4
}
else
{
   alert("value* is null");
}¿Alguna idea de por qué sucede así ...?
                    
                        javascript
                                
                    
                    
                        ria
fuente
                
                fuente

Respuestas:
Es porque val no lo es
null, pero contiene'null'como una cadena.Intenta comprobar con 'nulo'
Para una explicación de cuándo y por qué esto funciona, vea los detalles a continuación .
fuente
esto hará el truco para ti
fuente
if(val), que es mucho más claro de leer. Me apegaría a eso (fyi Ujwal, !! val debería funcionar técnicamente en C o C ++ también) ver aquí los valores de 'veracidad' de javascript: janosch.woschitz.org/javascript-equality-comparisonval = 0desde entonces se!!0evalúa como falso0,false,null,undefinedo algo por el valor que se resuelve entrueuno!, Usted va a obtenerfalsepor !!. Debe usarse con moderación si es que lo hace.Hay 3 formas de verificar "no nulo". Mi recomendación es usar Strict Not Version.
1. Estricto no versión
La versión estricta no utiliza el "Algoritmo estricto de comparación de igualdad" http://www.ecma-international.org/ecma-262/5.1/#sec-11.9.6 . los
!==tiene un rendimiento más rápido, que el!=operador debido a que la igualdad estricta Comparación algoritmo no encasillado valores.2. No estricta no versión
La versión no estricta utiliza el "Algoritmo de comparación de igualdad abstracta" http://www.ecma-international.org/ecma-262/5.1/#sec-11.9.3 . El
!=tiene un rendimiento más lento que el!==operador debido a que el algoritmo de comparación abstracta Igualdad typecasts valores.3. Doble no versión
La versión no doble
!!tiene un rendimiento más rápido que la versión no estricta!==y la versión no estricta!=( https://jsperf.com/tfm-not-null/6 ). Sin embargo, encasillará los valores de "Falsey" comoundefinedyNaNen falso ( http://www.ecma-international.org/ecma-262/5.1/#sec-9.2 ) lo que puede conducir a resultados inesperados, y tiene peor legibilidad porquenullno se declara explícitamentefuente
!!valfuncionó para mí peroval!==nullno lo ha hecho. Por que esval?console.log(typeof val).!!eliminará más que solonull. Se convertiráNaNy se convertiráundefineden falso también. Y es por eso que su matriz se filtra correctamente cuando usa el doble no operador!!.Úselo
!==como lo!=llevará a un mundo de rareza de tabla de verdad JavaScript no transitiva.fuente
undefinedonull. En cuyo casoval != nullvolverátrueparaundefinedonullno para otros valores de falsey como0.Debería utilizar el
not equalsoperador de comparación estricta!==para que si el usuario ingresa"null", no llegue alelse.fuente
Posiblemente es porque el valor de
vales en realidad la cadena en"null"lugar del valornull.fuente
Esto debería funcionar bien ...
fuente
Si desea poder incluir 0 como valor válido:
fuente
Esto funcionará:
fuente
Consulte https://softwareengineering.stackexchange.com/a/253723
se evaluará como verdadero si el valor no es:
fuente