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?.lengthsolo será veraz siemailno es nulo y tiene una.lengthpropiedad distinta de cero . Si tunoteste valor, el resultado debería comportarse como desee tanto para cadenas como para matrices.Si
emailtienenullo no un.length, entoncesemail?.lengthevaluará 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 // falsefuente
.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 emailparte solo devolverá falso si la cadena de correo electrónico está vacía.fuente
Puede utilizar la operación coffeescript o =
s = '' s or= nullfuente
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).lengthSi 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
truthyvalor o no, solo necesita una línea:result = !email or !passwordy 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 falseDa 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 - falsefuente