我意识到做一些类似于在C#中写JavaScript这样的事情是令人皱眉的。(如果你不知道我在说什么,请看这 )
但是作为一个判断调用,我认为我们可以对null或空值进行相对简单的检查,因此我正在寻找有关String.isNullOrEmpty实现的反馈。
String.isNullOrEmpty = function (value) {
return (!value || value == undefined || value == "" || value.length == 0);
}发布于 2011-10-31 02:28:36
首先:
return (!value || value == undefined || value == "" || value.length == 0);查看最后一个条件,如果值为== "",则其长度必须为0。因此,放弃它:
return (!value || value == undefined || value == "");但是等等!在JS中,空字符串是false。因此,删除value == "":
return (!value || value == undefined);而且!undefined是真的,所以不需要检查。所以我们有:
return (!value);我们不需要括号:
return !valueQ.E.D.
发布于 2011-10-26 04:38:35
我只想做几处修改。
首先,在Javascript中始终使用===而不是==。您可以阅读更多关于该论堆栈溢出的内容。
第二,从undefined易变开始,我将使用
typeof value === "undefined"而不是
value === undefined第三,我将删除!value和value === ""条件。他们是多余的。
我会用一种和你稍微不同的方法:
String.isNullOrEmpty = function(value) {
return !(typeof value === "string" && value.length > 0);
}这将检查该值的类型是否为"string" (因此是非空的和未定义的),以及它是否为空。如果是,则不为空或空。
请注意,这将返回非字符串输入的true,如果希望为意外的输入类型抛出错误,这可能不是您想要的结果。
发布于 2015-02-26 02:59:16
函数意外地返回以下非字符串值的true:
false0Number.NaN[[]][]很有可能!value --尽管它同样草率--已经足够了,在这种情况下,您根本不需要定义这个函数。但是,如果您创建一个名为isNullOrEmpty的函数,那么它就应该这样做。
function String.isNullOrEmpty(value) {
return value == null || value === "";
}注意,value == null是value === null || value === undefined的缩写。
https://codereview.stackexchange.com/questions/5572
复制相似问题