// quick and dirty will be true for '', null, undefined, 0, NaN and false.
if (!x)
// test for null OR undefined
if (x == null)
// test for undefined OR null
if (x == undefined)
// test for undefined
if (x === undefined)
// or safer test for undefined since the variable undefined can be set causing tests against it to fail.
if (typeof x == 'undefined')
// test for empty string
if (x === '')
// if you know its an array
if (x.length == 0)
// or
if (!x.length)
// BONUS test for empty object
var empty = true, fld;
for (fld in x) {
empty = false;
break;
}
/**
* Checks if value is empty. Deep-checks arrays and objects
* Note: isEmpty([]) == true, isEmpty({}) == true, isEmpty([{0:false},"",0]) == true, isEmpty({0:1}) == false
* @param value
* @returns {boolean}
*/
function isEmpty(value){
var isEmptyObject = function(a) {
if (typeof a.length === 'undefined') { // it's an Object, not an Array
var hasNonempty = Object.keys(a).some(function nonEmpty(element){
return !isEmpty(a[element]);
});
return hasNonempty ? false : isEmptyObject(Object.keys(a));
}
return !a.some(function nonEmpty(element) { // check if array is really not empty as JS thinks
return !isEmpty(element); // at least one element should be non-empty
});
};
return (
value == false
|| typeof value === 'undefined'
|| value == null
|| (typeof value === 'object' && isEmptyObject(value))
);
}
22条答案
按热度按时间irtuqstp1#
如果要测试空字符串:
如果要检查已声明但未定义的变量:
如果您正在检查可能未定义的变量:
如果同时选中两个变量,即变量为空或未定义:
chhqkbe12#
这是一个比你想象的更大的问题。变量可以通过多种方式清空。这在某种程度上取决于你需要知道什么。
cidc1ykv3#
这应涵盖所有情况:
azpvetkf4#
我在上面发布的许多解决方案中看到了潜在的缺点,因此我决定编写我自己的解决方案。
**注意:**它使用Array.prototype.some,请检查您的浏览器支持。
如果满足以下条件之一,则下面的解决方案认为变量为空:
1.JS认为变量等于
false
,已经涵盖了0
、""
、[]
,甚至[""]
和[0]
1.取值为
null
或类型为'undefined'
1.为空对象
1.它是一个对象/数组,由仅个本身为空的值组成(即分解为基元,每个基元的每个部分都等于
false
)。选中递归钻取到对象/数组结构。例如。功能代码:
z0qdvdin5#
这是我最简单的解决方案。
灵感来自PHP
empty
函数ac1kyiln6#
@SJ00答案的可读性更强:
4xrmg8kj7#
请参阅http://underscorejs.org/#isEmpty
如果可枚举对象不包含任何值(没有可枚举的自身属性),则isEmpty_.isEmpty(Object)返回TRUE。对于字符串和类似数组的对象,_.isEmpty检查长度属性是否为0。
ccrfmcuu8#
将@inkednm的答案合并为一个函数:
rkttyhzu9#
对JSON键的空检查取决于用例。对于常见用例,我们可以测试以下内容:
1.不是
null
1.不是
undefined
1.非空字符串
''
1.非空对象
{}``[]
(数组为对象)职能:
为以下项返回TRUE:
qojgxg4l10#
只要将变量放在IF条件中,如果变量有任何值,它将返回TRUE或FALSE。
2eafrhcq11#
这样做怎么样?
JSON.stringify({}) === "{}"
9nvpjoqh12#
这取决于你所说的“空”是什么意思。最常见的模式是检查变量是否为undefined。许多人也会执行空值检查,例如:
if (myVariable === undefined || myVariable === null)...
或者,用一种更简短的形式:
if (myVariable || myVariable === null)...
8xiog9wr13#
将查看var是否已声明但未初始化。
px9o7tmv14#
检查是否有未定义:
这将完成vb的
IsEmpty
的等价物。如果myvar包含任何值,即使是NULL、空字符串或0,它也不是“空的”。要检查变量或属性是否存在,例如它已声明,但可能尚未定义,您可以使用
in
操作符。hgc7kmma15#
如果您正在寻找与PHP的
empty
函数等效的函数,请查看以下内容:http://phpjs.org/functions/empty:392