如何在Javascript中检查变量是否为空?抱歉这个愚蠢的问题,但我是Javascript的新手!
if(response.photo) is empty {
do something
else {
do something else
}
response.photo
来自JSON,有时它可能是空的,空数据单元格!我想检查一下它是否为空。
答案 0 :(得分:101)
如果您正在测试空字符串:
if(myVar === ''){ // do stuff };
如果您正在检查已声明但未定义的变量:
if(myVar === null){ // do stuff };
如果您正在检查可能未定义的变量:
if(myVar === undefined){ // do stuff };
如果要检查两者,则变量为null或未定义:
if(myVar == null){ // do stuff };
答案 1 :(得分:43)
这是一个比你想象的更大的问题。变量可以在很多方面清空。有点取决于你需要知道什么。
// 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;
}
答案 2 :(得分:10)
这应涵盖所有情况:
function empty( val ) {
// test results
//---------------
// [] true, empty array
// {} true, empty object
// null true
// undefined true
// "" true, empty string
// '' true, empty string
// 0 false, number
// true false, boolean
// false false, boolean
// Date false
// function false
if (val === undefined)
return true;
if (typeof (val) == 'function' || typeof (val) == 'number' || typeof (val) == 'boolean' || Object.prototype.toString.call(val) === '[object Date]')
return false;
if (val == null || val.length === 0) // null or 0 length array
return true;
if (typeof (val) == "object") {
// empty object
var r = true;
for (var f in val)
r = false;
return r;
}
return false;
}
答案 3 :(得分:4)
我发现上面发布的许多解决方案存在潜在的缺点,所以我决定自己编译 注意:它使用Array.prototype.some,请检查您的浏览器支持。
如果满足下列条件之一,则下面的解决方案将变量视为空:
false
,它已涵盖许多内容,例如0
,""
,[]
,甚至[""]
和{{ 1}} [0]
或类型为null
它是一个对象/数组,其中仅值本身为空(即分解为基元,每个部分等于'undefined'
)。检查以递归方式钻取到Object / Array结构中。
例如。
false
功能代码:
isEmpty({"": 0}) // true
isEmpty({"": 1}) // false
isEmpty([{}, {}]) // true
isEmpty(["", 0, {0: false}]) //true
答案 4 :(得分:3)
更易读的 @SJ00 答案版本:
/**
* Checks if a JavaScript value is empty
* @example
* isEmpty(null); // true
* isEmpty(undefined); // true
* isEmpty(''); // true
* isEmpty([]); // true
* isEmpty({}); // true
* @param {any} value - item to test
* @returns {boolean} true if empty, otherwise false
*/
function isEmpty(value) {
return (
value === null || // check for null
value === undefined || // check for undefined
value === '' || // check for empty string
(Array.isArray(value) && value.length === 0) || // check for empty array
(typeof value === 'object' && Object.keys(value).length === 0) // check for empty object
);
}
答案 5 :(得分:3)
对JSON密钥的空检查取决于用例。对于一个常见的用例,我们可以测试以下内容:
null
undefined
''
{}
[]
(数组是对象) 功能:
function isEmpty(arg){
return (
arg == null || // Check for null or undefined
arg.length === 0 || // Check for empty String (Bonus check for empty Array)
(typeof arg === 'object' && Object.keys(arg).length === 0) // Check for empty Object or Array
);
}
为以下项返回true
isEmpty(''); // Empty String
isEmpty(null); // null
isEmpty(); // undefined
isEmpty({}); // Empty Object
isEmpty([]); // Empty Array
答案 6 :(得分:3)
请参阅http://underscorejs.org/#isEmpty
isEmpty_.isEmpty(对象) 如果可枚举对象不包含任何值(没有可枚举的自身属性),则返回true。对于字符串和类似数组的对象,_. isEmpty检查length属性是否为0。
答案 7 :(得分:1)
怎么做?
JSON.stringify({}) === "{}"
答案 8 :(得分:1)
将@inkednm的答案合并为一个函数:
function isEmpty(property) {
return (property === null || property === "" || typeof property === "undefined");
}
答案 9 :(得分:0)
答案 10 :(得分:0)
function isEmpty(variable) {
const type = typeof variable
if (variable === null) return true
if (type === 'undefined') return true
if (type === 'boolean') return false
if (type === 'string') return !variable
if (type === 'number') return false
if (Array.isArray(variable)) return !variable.length
if (type === 'object') return !Object.keys(variable).length
return !variable
}
答案 11 :(得分:0)
这是我最简单的解决方案。
受 PHP
empty
函数的启发
function empty(n){
return !(!!n ? typeof n === 'object' ? Array.isArray(n) ? !!n.length : !!Object.keys(n).length : true : false);
}
//with number
console.log(empty(0)); //true
console.log(empty(10)); //false
//with object
console.log(empty({})); //true
console.log(empty({a:'a'})); //false
//with array
console.log(empty([])); //true
console.log(empty([1,2])); //false
//with string
console.log(empty('')); //true
console.log(empty('a')); //false
答案 12 :(得分:0)
const isEmpty = val => val == null || !(Object.keys(val) || val).length;
答案 13 :(得分:0)
这是一种检查空变量的更简单(简短)的解决方案。此函数检查变量是否为空。提供的变量可能包含混合值(空,未定义,数组,对象,字符串,整数,函数)。
function empty(mixed_var) {
if (!mixed_var || mixed_var == '0') {
return true;
}
if (typeof mixed_var == 'object') {
for (var k in mixed_var) {
return false;
}
return true;
}
return false;
}
// example 1: empty(null);
// returns 1: true
// example 2: empty(undefined);
// returns 2: true
// example 3: empty([]);
// returns 3: true
// example 4: empty({});
// returns 4: true
// example 5: empty(0);
// returns 5: true
// example 6: empty('0');
// returns 6: true
// example 7: empty(function(){});
// returns 7: false
答案 14 :(得分:0)
只需将变量置于if条件内,如果变量有任何值,则返回true,否则返回false。
if (response.photo){ // if you are checking for string use this if(response.photo == "") condition
alert("Has Value");
}
else
{
alert("No Value");
};
答案 15 :(得分:0)
检查未定义:
if (typeof response.photo == "undefined")
{
// do something
}
这将使vb的IsEmpty
等同。如果myvar包含任何值,即使为null,空字符串或0,则它不是“空”。
要检查变量或属性是否存在,例如它已被声明,尽管可能尚未定义,但您可以使用in
运算符。
if ("photo" in response)
{
// do something
}
答案 16 :(得分:0)
如果您正在寻找相当于PHP的empty
函数,请查看以下内容:
function empty(mixed_var) {
// example 1: empty(null);
// returns 1: true
// example 2: empty(undefined);
// returns 2: true
// example 3: empty([]);
// returns 3: true
// example 4: empty({});
// returns 4: true
// example 5: empty({'aFunc' : function () { alert('humpty'); } });
// returns 5: false
var undef, key, i, len;
var emptyValues = [undef, null, false, 0, '', '0'];
for (i = 0, len = emptyValues.length; i < len; i++) {
if (mixed_var === emptyValues[i]) {
return true;
}
}
if (typeof mixed_var === 'object') {
for (key in mixed_var) {
// TODO: should we check for own properties only?
//if (mixed_var.hasOwnProperty(key)) {
return false;
//}
}
return true;
}
return false;
}
答案 17 :(得分:0)
if (myVar == undefined)
将查看var是否已声明但未初始化。
答案 18 :(得分:0)
这取决于你所说的“空”。最常见的模式是检查变量是否为undefined。许多人也进行空检查,例如:
if (myVariable === undefined || myVariable === null)...
或以较短的形式:
if (myVariable || myVariable === null)...