js确定参数(字符串、数组、对象)是否未定义或值是否为空。

有时我们会遇到这样的情况:在一些前端控件的数据验证过程中,向服务器端提交数据,我们需要确定提交的数据是否是空的。你需要在这里可以是各种类型的数据(数字、字符串、数组、对象序列化等),通过json.stringify(数据),然后通过。

下列数据值被定义为空值:

未定义
无效的
空字符串和纯空白字符串:,等等。
空数组:{ }
空对象:{ }

对于除此之外的数据,它被认为不是空的。

空、不容易识别,但对于其他类型,我们需要得到他们的数据类型检测数据是否为空或不。认为最简单的方法是利用typeof运算符:
复制代码代码如下所示:
如果(typeof数据=数){
处理数字
}

但类型返回的字符串类型,'function若干,'object'only'boolean'String','undefined '的六,许多本地对象如日期和regexp区分对象和对象的{ }之间产生。此外,typeof会返回不同的值的一些基本数据类型(字符串,如、数、布尔)及其相应的基本包装类型的数据,如:
复制代码代码如下所示:
console.log(typeof假); / / 'boolean
console.log(typeof新布尔(假)); / / 'object
console.log(类型1); / /数
console.log(typeof的新号码(1)); / / 'object
console.log(typeof '); / / 'String'
console.log(typeof新的字符串()); / / 'object

它对我们的判断也有一定的影响。

用实例它只能判断对象,有多个相似的对象在多帧时不共享原型。不能正确判断来自其他帧的物体。

嗯,有一个最简单的和最可靠的方法:object.prototype.tostring.for不同类型的数据,这种方法可以返回{对象},{ }的对象数组,字符串{对象} 'such字符串,它是判断非常方便。值得注意的是,在IE8及以下的浏览器,这个方法将返回{对象}零窗口,定义,等等,但幸运的是,这并不影响我们的空对象的判断。

在代码的旁边,我们来看看注释。
复制代码代码如下所示:
无功isemptyvalue =函数(值){

变量类型;
如果(值= = null){ / /未定义的值| |相当于价值= = = = = = null
返回true;
}
类型= object.prototype.tostring.call(值)。片(8、1);
开关(类型){
case'string:
返回!修剪(价值);
case'array:
返回!value.length;
case'object:
返回的。isemptyobject(价值); / /使用普通的对象…判断错误
违约:
返回false;其他对象被假定为非空。
}
};