Tengo este código que busca la cadena vacía o nula. Está funcionando en 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 ''
. ¿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 idioma que me falta.
coffeescript
jcollum
fuente
fuente
!!
versión, que es una forma común de convertir esencialmente a booleano. Si importa, es casi seguro que es más rápido que definir una función como sugirió Jeremy.No es completamente equivalente, pero
email?.length
solo será veraz siemail
no es nulo y tiene una.length
propiedad distinta de cero . Si tunot
este valor, el resultado debería comportarse como desee tanto para cadenas como para matrices.Si
email
tienenull
o no un.length
, entoncesemail?.length
evaluará anull
, que es falso. Si tiene un.length
, este valor se evaluará según su longitud, que será falso si está vacío.Su función podría implementarse como:
eitherStringEmpty = (email, password) -> not (email?.length and password?.length)
fuente
Este es un caso en el que la "veracidad" resulta útil. Ni siquiera necesitas definir una función para eso:
test1 = not (email and password)
¿Por qué funciona?
'0' // true '123abc' // true '' // false null // false undefined // false
fuente
.trim()
el valor como parte de su lógica de validación. La respuesta es más sobre la sintaxis CS.unless email? and email console.log 'email is undefined, null or ""'
Primero verifique si el correo electrónico no está indefinido y no es nulo con el operador existencial, luego, si sabe que existe, la
and email
parte solo devolverá falso si la cadena de correo electrónico está vacía.fuente
Puede utilizar la operación coffeescript o =
s = '' s or= null
fuente
Si necesita verificar que el contenido es una cadena, no un nulo ni una matriz, use un tipo simple de comparación:
if typeof email isnt "string"
fuente
typeof email isnt "string"
devuelve falso para ambos''
y'a'
Aquí hay un jsfiddle que demuestra una forma muy fácil de hacer esto.
Básicamente, simplemente haces esto en 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 :)
fuente
Creo que el signo de interrogación es la forma más fácil de llamar a una función en una cosa si existe.
por ejemplo
car = { tires: 4, color: 'blue' }
quieres obtener el color, pero solo si el coche existe ...
coffeescript:
se traduce en javascript:
if (car != null) { car.color; }
se llama operador existencial http://coffeescript.org/documentation/docs/grammar.html#section-63
fuente
Estoy bastante seguro de que la respuesta de @thejh fue lo suficientemente buena como para verificar la cadena vacía PERO, creo que con frecuencia debemos verificar que '¿Existe?' y luego debemos marcar '¿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 el orden de esta pregunta, se verificaría con este orden 1. ¿Existe? 2. ¿No es una cadena vacía? 3. ¿No es un objeto vacío?
por lo que no hubo ningún problema para todas las variables, incluso en el caso de que no existieran.
fuente
Según esta respuesta sobre la verificación de si una variable tiene un
truthy
valor o no, solo necesita una línea:result = !email or !password
y puede probarlo usted mismo en esta consola de Coffeescript en línea
fuente
En lugar de la respuesta aceptada
passwordNotEmpty = !!password
, puede usarpasswordNotEmpty = if password then true else false
Da el mismo resultado (la diferencia solo en la sintaxis).
En la primera columna hay un valor, en la segunda está 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
fuente