coffeescript - react - La forma más fácil de verificar si la cadena es nula o está vacía
coffeescript wikipedia (11)
Aquí hay un jsfiddle demuestra una manera muy fácil de hacer esto.
Básicamente, simplemente haz esto es javascript:
var email="oranste";
var password="i";
if(!(email && password)){
alert("One or both not set");
}
else{
alert("Both set");
}
En coffescript:
email = "oranste"
password = "i"
unless email and password
alert "One or both not set"
else
alert "Both set"
Espero que esto ayude a alguien :)
Tengo este código que busca la cadena vacía o nula. Está trabajando en las pruebas.
eitherStringEmpty= (email, password) ->
emailEmpty = not email? or email is ''''
passwordEmpty = not password? or password is ''''
eitherEmpty = emailEmpty || passwordEmpty
test1 = eitherStringEmpty "A", "B" # expect false
test2 = eitherStringEmpty "", "b" # expect true
test3 = eitherStringEmpty "", "" # expect true
alert "test1: #{test1} test2: #{test2} test3: #{test3}"
Lo que me pregunto es si hay una mejor manera que not email? or email is ''''
not email? or email is ''''
. ¿Puedo hacer el equivalente de C # string.IsNullOrEmpty(arg)
en CoffeeScript con una sola llamada? Siempre pude definir una función para él (como lo hice) pero me pregunto si hay algo en el lenguaje que me falta.
Con base en esta respuesta sobre comprobar si una variable tiene un valor de truthy
o no, solo necesita una línea:
result = !email or !password
y puedes probarlo tú mismo en esta consola en línea de Coffeescript
Creo que el signo de interrogación es la forma más fácil de invocar una función en una cosa si la cosa existe.
por ejemplo
car = {
tires: 4,
color: ''blue''
}
quieres obtener el color, pero solo si el auto existe ...
coffeescript:
car?.color
se traduce a javascript:
if (car != null) {
car.color;
}
se llama operador existencial http://coffeescript.org/documentation/docs/grammar.html#section-63
En lugar de la respuesta aceptada passwordNotEmpty = !!password
puede usar
passwordNotEmpty = if password then true else false
Da el mismo resultado (la diferencia solo en sintaxis).
En la primera columna hay un valor, en el segundo es el resultado de if value
:
0 - false
5 - true
''string'' - true
'''' - false
[1, 2, 3] - true
[] - true
true - true
false - false
null - false
undefined - false
Este es un caso donde la "verdad" es útil. Ni siquiera necesita definir una función para eso:
test1 = not (email and password)
¿Por qué funciona?
''0'' // true
''123abc'' // true
'''' // false
null // false
undefined // false
Estoy bastante seguro de que la respuesta de @thejh fue lo suficientemente buena para verificar la cadena vacía PERO, creo que con frecuencia necesitamos verificar que ''¿existe?'' y luego tenemos que verificar ''¿Está vacío? incluir cadena, matriz y objeto ''
Esta es la forma abreviada de CoffeeScript para hacer esto.
tmp? and !!tmp and !!Object.keys(tmp).length
Si mantenemos este orden de preguntas, eso sería verificado por esta orden 1. ¿existe? 2. cadena no vacía? 3. ¿objeto no vacío?
así que no hubo ningún problema para todas las variables, incluso en el caso de que no existiera.
No es totalmente equivalente, pero el email?.length
solo será verídico si el email
no es nulo y tiene una propiedad .length
distinta de cero. Si no not
este valor, el resultado debe comportarse como desee para ambas cadenas y matrices.
Si el email
es null
o no tiene una .length
, entonces el email?.length
evaluará null
, que es falsey. Si tiene una .length
, este valor evaluará su longitud, que será falsey si está vacía.
Su función podría implementarse como:
eitherStringEmpty = (email, password) ->
not (email?.length and password?.length)
Puede usar el coffeescript o la operación =
s = ''''
s or= null
Si necesita verificar que el contenido sea una cadena, no nula y no una matriz, use un simple tipo de comparación:
if typeof email isnt "string"
Sip:
passwordNotEmpty = not not password
o más corto:
passwordNotEmpty = !!password
unless email? and email
console.log ''email is undefined, null or ""''
Primero compruebe si el correo electrónico no está indefinido y no es nulo con el operador existencial, entonces, si sabe que existe, la parte de and email
solo devolverá falso si la cadena de correo electrónico está vacía.