我在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应该有一个核心函数来检查返回值,如(空字符串,对象,数组,等)。
您的意见是什么?
答案 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。