最简单的方法来检查string是否为空或空

我有这个检查空string或空string的代码。 它正在testing。

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

我想知道的是,如果有比not email? or email is ''更好的方法not email? or email is '' not email? or email is '' 。 我可以在一个调用CoffeeScript中的C# string.IsNullOrEmpty(arg)吗? 我总是可以为它定义一个函数(就像我所做的那样),但是我想知道是否在我所缺less的语言中有某些东西。

对:

 passwordNotEmpty = not not password 

或更短:

 passwordNotEmpty = !!password 

这不完全等同,但是如果email非空并且具有非零的.length属性,则email?.length将仅为真。 如果你not这个值,结果应该像你想要的string和数组一样。

如果emailnull或没有.length ,那么email?.length将评估为null ,这是错误的。 如果它有一个.length那么这个值将计算为它的长度,如果它是空的,这将是假的。

你的function可以被实现为:

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

这是“真实”派上用场的情况。 你甚至不需要为此定义一个函数:

 test1 = not (email and password) 

为什么它工作?

 '0' // true '123abc' // true '' // false null // false undefined // false 
 unless email? and email console.log 'email is undefined, null or ""' 

首先检查电子邮件是不是未定义的,不存在与存在的运算符,然后如果你知道它存在and email部分将只返回false,如果电子邮件string是空的。

您可以使用coffeescript或=操作

 s = '' s or= null 

如果你需要检查内容是一个string,而不是null,而不是一个数组,使用一个简单的比较types:

  if typeof email isnt "string" 

这是一个jsfiddle演示一个非常简单的方法来做到这一点。

基本上你只要做到这一点就是javascript:

 var email="oranste"; var password="i"; if(!(email && password)){ alert("One or both not set"); } else{ alert("Both set"); } 

在coffescript:

 email = "oranste" password = "i" unless email and password alert "One or both not set" else alert "Both set" 

希望这可以帮助别人:)

如果事物存在,我认为问号是调用一个函数的最简单的方法。

例如

 car = { tires: 4, color: 'blue' } 

你想得到的颜色,但只有当汽车存在…

CoffeeScript的:

  car?.color 

转换为javascript:

 if (car != null) { car.color; } 

它被称为存在操作符http://coffeescript.org/documentation/docs/grammar.html#section-63

而不是接受的答案passwordNotEmpty = !!password您可以使用passwordNotEmpty = !!password

 passwordNotEmpty = if password then true else false 

它给出了相同的结果(仅在语法上的区别)。

第一列是一个值,第二列是if value的结果:

 0 - false 5 - true 'string' - true '' - false [1, 2, 3] - true [] - true true - true false - false null - false undefined - false 

基于这个关于检查variables是否具有truthy值的答案 ,您只需要一行:

 result = !email or !password 

您可以在这个在线Coffeescript控制台上为自己尝试一下