90 votes

Meilleure façon de vérifier si la chaîne est null ou vide

J'ai ce code qui vérifie le vide ou null string. Il travaille dans les tests.

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}"

Ce que je me demande si il ya une meilleure façon qu' not email? or email is ''. Je peux faire l'équivalent de C# string.IsNullOrEmpty(arg) en CoffeeScript avec un seul appel? J'ai toujours pu définir une fonction (comme je l'ai fait) mais je me demandais si il y a quelque chose dans la langue que je suis absent.

122voto

thejh Points 20901

Yup:

passwordNotEmpty = not not password

ou moins:

passwordNotEmpty = !!password

37voto

Jeremy Banks Points 32470

Ce n'est pas tout à fait équivalent, mais email?.length ne seront truthy si email est non nul et a un non-zéro .length de la propriété. Si vous not cette valeur, le résultat devrait se comporter comme vous le souhaitez pour les chaînes et les tableaux.

Si email est null ou n'ont pas d' .length, alors email?.length donnera null, ce qui est falsey. Si elle dispose d'une .length cette valeur s'évaluer à sa longueur, ce qui sera falsey si elle est vide.

Votre fonction pourrait être mis en œuvre comme:

eitherStringEmpty = (email, password) ->
  not (email?.length and password?.length)

14voto

Ricardo Tomasi Points 13398

C'est un cas où "truthiness" est très pratique. Vous n'avez même pas besoin de définir une fonction pour que:

test1 = not (email and password)

Pourquoi a-t-il?

'0'       // true
'123abc'  // true
''        // false
null      // false
undefined // false

5voto

cutemachine Points 748
unless email? and email
  console.log 'email is undefined, null or ""'

Vérifiez d'abord si le courriel n'est pas indéfini et non nul avec l'opérateur existentiel, alors si vous savez qu'il existe l' and email partie ne retourne false si l'e-mail de la chaîne est vide.

1voto

klamping Points 626

Si vous avez besoin de vérifier que le contenu est une chaîne de caractères, pas null et non pas un tableau, utilisez un simple typeof comparaison:

 if typeof email isnt "string"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X