首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >String.IsNullOrEmpty in JavaScript

String.IsNullOrEmpty in JavaScript
EN

Code Review用户
提问于 2011-10-25 15:01:45
回答 5查看 251K关注 0票数 58

我意识到做一些类似于在C#中写JavaScript这样的事情是令人皱眉的。(如果你不知道我在说什么,请看 )

但是作为一个判断调用,我认为我们可以对null或空值进行相对简单的检查,因此我正在寻找有关String.isNullOrEmpty实现的反馈。

代码语言:javascript
复制
String.isNullOrEmpty = function (value) {
    return (!value || value == undefined || value == "" || value.length == 0);
}
EN

回答 5

Code Review用户

回答已采纳

发布于 2011-10-31 02:28:36

首先:

代码语言:javascript
复制
return (!value || value == undefined || value == "" || value.length == 0);

查看最后一个条件,如果值为== "",则其长度必须为0。因此,放弃它:

代码语言:javascript
复制
return (!value || value == undefined || value == "");

但是等等!在JS中,空字符串是false。因此,删除value == ""

代码语言:javascript
复制
return (!value || value == undefined);

而且!undefined是真的,所以不需要检查。所以我们有:

代码语言:javascript
复制
return (!value);

我们不需要括号:

代码语言:javascript
复制
return !value

Q.E.D.

票数 125
EN

Code Review用户

发布于 2011-10-26 04:38:35

我只想做几处修改。

首先,在Javascript中始终使用===而不是==。您可以阅读更多关于该论堆栈溢出的内容。

第二,从undefined易变开始,我将使用

代码语言:javascript
复制
typeof value === "undefined"

而不是

代码语言:javascript
复制
value === undefined

第三,我将删除!valuevalue === ""条件。他们是多余的。

我的修订版

我会用一种和你稍微不同的方法:

代码语言:javascript
复制
String.isNullOrEmpty = function(value) {
  return !(typeof value === "string" && value.length > 0);
}

这将检查该值的类型是否为"string" (因此是非空的和未定义的),以及它是否为空。如果是,则不为空或空。

请注意,这将返回非字符串输入的true,如果希望为意外的输入类型抛出错误,这可能不是您想要的结果。

票数 17
EN

Code Review用户

发布于 2015-02-26 02:59:16

函数意外地返回以下非字符串值的true

  • false
  • 0
  • Number.NaN
  • [[]]
  • []

很有可能!value --尽管它同样草率--已经足够了,在这种情况下,您根本不需要定义这个函数。但是,如果您创建一个名为isNullOrEmpty的函数,那么它就应该这样做。

代码语言:javascript
复制
function String.isNullOrEmpty(value) {
    return value == null || value === "";
}

注意,value == nullvalue === null || value === undefined的缩写。

票数 8
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/5572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档