tutorial react objects loop for coffeescript

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.