检查的东西是空的Javascript?

我怎样才能检查一个variables是否为空的Javascript? 对不起,愚蠢的问题,但我是一个JavaScript的新手!

if(response.photo) is empty { do something else { do something else } 

response.photo来自JSON,有时候可能是空的,空的数据单元格! 我想检查它是否是空的。

如果你正在testing一个空string:

 if(myVar === ''){ // do stuff }; 

如果您正在检查已声明但未定义的variables:

 if(myVar === null){ // do stuff }; 

如果您正在检查可能未定义的variables:

 if(myVar === undefined){ // do stuff }; 

如果你同时检查两个variables是空的或未定义的:

 if(myVar == null){ // do stuff }; 

这是一个比你想象的更大的问题。 variables可以通过很多方式清空。 有点取决于你需要知道的。

 // 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; } 

这应该涵盖所有情况:

 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; } 

请参阅http://underscorejs.org/#isEmpty

isEmpty_.isEmpty(object)如果可枚举对象不包含任何值(不可枚举自己的属性),则返回true。 对于string和类似数组的对象_.isEmpty检查length属性是否为0。

我在上面发现的许多解决scheme中看到了潜在的缺点,所以我决定编译我自己的。
注意:它使用Array.prototype.some ,检查你的浏览器支持。

下面的解决scheme考虑variables为空如果以下之一是正确的:

  1. JS认为variables等于false ,已经涵盖了很多东西,比如0""[] ,甚至[""][0]
  2. 值为null或者它的types是'undefined'
  3. 这是一个空的对象
  4. 它是一个包含空值的对象/数组(即分解为原始数据的每个部分都等于false )。 检查钻取recursion到对象/数组结构。 例如

     isEmpty({"": 0}) // true isEmpty({"": 1}) // false isEmpty([{}, {}]) // true isEmpty(["", 0, {0: false}]) //true 

function代码:

 /** * 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)) ); } 

这取决于你的意思是“空”。 最常见的模式是检查variables是否未定义 。 许多人也做一个空的检查,例如:
if (myVariable === undefined || myVariable === null)...

或者以更短的forms:
if (myVariable || myVariable === null)...

 if (myVar == undefined) 

将工作,看看是否宣布变种,但没有initalized。

检查未定义:

 if (typeof response.photo == "undefined") { // do something } 

这将做vb的IsEmpty equivelant。 如果myvar包含任何值,即使为null,空string或0,也不是“空”。

要检查variables或属性是否存在,例如已经声明了,尽pipe它可能没有被定义,你可以使用in运算符。

 if ("photo" in response) { // do something } 

如果你正在寻找相当于PHP的emptyfunction,请检查:

 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; } 

http://phpjs.org/functions/empty:392

如果是空数组,那么我缺less的是什么… keyless object … falseness const isEmpty = o => Array.isArray(o)&&!o.join('')。 typeof o ==='object'&&!Object.keys(o).length || !(+值);

只要把variables放在if条件中,如果variables有任何值,就会返回true,否则返回false。

 if (response.photo){ // if you are checking for string use this if(response.photo == "") condition alert("Has Value"); } else { alert("No Value"); };