在Javascript中检查空返回?

时间:2015-08-21 13:35:18

标签: javascript

我在javascript验证时正在考虑这段代码

resp = {empty}; //empty from some type of data like (array,string,object)
if (resp === '' || resp === ' ' || resp === null || ect{checking another type data})

看起来很有趣,它应该在一个空函数中简单。

if (empty(resp)) // do something

当我在MDN文档中查找时,有一个empty函数,但行为与我之前提到的不同。 我认为javascript应该有一个核心函数来检查返回值,如(空字符串,对象,数组,等)。

您的意见是什么?

3 个答案:

答案 0 :(得分:0)

您似乎正在使用假定为字符串的值

String.prototype.empty = function(){
     return (this.length <= 0 || this == '');
}
console.log(''.empty());

我没有处理undefined或null,因为如果故意将其设置为这些值,则可能会导致问题。原型只适用于字符串对象。

在许多平台上,Empty不是跨浏览器兼容的,我建议不要使用它。

答案 1 :(得分:0)

实际上,你什么时候需要这个?这样的事情唯一有用的是你的变量可能包含一个字符串,一个数组,一个对象,或null,或者其他什么。如果你曾经遇到过一个变量可能存在这么多不同类型的情况,你就会做错事!*

如果要检查用户输入,那么该输入将是一个字符串。如果你有一个应该保留用户输入的变量并且它不是一个字符串,那么你在做什么?好吧,也许变量可能包含null或字符串,其中null表示用户没有输入任何内容,例如通过取消输入对话框。那么,你不想分开处理一个案例吗?

变量可能有不同的类型,以便您区分不同的情况。 null具有与空字符串(成功输入,但为空)不同的含义(例如取消操作)而不是布尔值false(出错)。你不应该在一个变量中拥有那么多可能的类型,但是如果你这样做,你应该以不同的方式对待它们。

如果你合法地碰巧处于可以处理它们的情况......那么,大多数情况都等同于false开头;那些不需要你自己检查的人。

并且' '永远不应该在任何语言中被视为&#34;空&#34;。它是一个包含内容的字符串。如果您认为此内容不值得,请自行编写支票。

如果您对类型严格要求,通常会得到回报。您应该期望变量是一个或极少数定义的类型,并将其视为这样。如果您希望变量是字符串,请将支票写为str.trim().length == 0。如果str实际上不是字符串,则此代码将失败并显示错误。这很好。因为这意味着您的程序实际上产生了一个您不期望的值,这指向了一个错误。像empty这样的过于通用的函数只是擅长抹灰和隐藏这些问题,而实际上它们应该尽早产生可见错误

*嘿,如果您正在编写JSON编码器等,您知道自己在做什么,而且您知道自己需要自己处理每种类型。我不是指你的意思。

答案 2 :(得分:-1)

尝试使用:

if(typeof(resp) != "undefined" && resp !== null) { .. }

如果变量已定义且不为null,则为true。