前端开发,JavaScript判断某个参数是否为空常见方式

判断为空的方法千篇一律,此处只是针对本人工作中遇到的一些坑做出总结,大家可以根据自己的工作需要自由组合,封装成一个公共方法,避免一些不必要的问题。


1.在操作该参数前,做非空判断

//常用作临时解决线上报错等问题
var a = '';
if(a && a.toLowerCase()){
  console.log('参数不为空')
}else{
  console.log('参数为空')
}

2.typeof,判断类型是否是undefined

var b;
if(typeof b == 'undefined') {
  console.log('b is undefined');
}

3.直接判断一个字符串是否为空

var c = '';
if(c === ''|| c === null || c === undefined) {
  console.log('参数为空');
} else {
  console.log('参数不为空');
}

4.使用 string.trim()函数

//trim()会移除字符串首尾的空格,可以字符串调用后,在取其length判断是否为0
var d = '';
d.trim().length == 0;//true,字符串是空字符串

d = '   ';
d.trim().length == 0;//true,字符串是空字符串

d = '    1 ';
d.trim().length == 0;//false,此时 d.trim() == ‘1’ 字符串不为空

5.正则表达式: /(^\s)|(\s$)/g**

//当浏览器不支持tirm()时,请使用该正则,功能与用法通 tirm() 一致
var e = '';
e.replace(/(^\s*)|(\s*$)/g, '').length == 0;//true,字符串是空字符串

e = '   ';
e.replace(/(^\s*)|(\s*$)/g, '').length == 0;//true,字符串是空字符串

e = '    1 ';
e.replace(/(^\s*)|(\s*$)/g, '').length == 0;//false,此时 d.trim() == ‘1’ 字符串不为空

6.判断一个数组是否为空

var f = [];
if(f.length == 0) {
  console.log('数组为空');
} else {
  console.log('数组不为空');
}
//['',''],一般这种形式不纳入考虑,这种情况下length不为0;

7.判断一个对象是否为空

//方法一:将对象转行成JSON字符串形式,判断字符串是否为‘{}’
var g = {};
var h = JSON.stringify(g) == '{}';
console.log(h);

//方法二:for...in循环
var obj = {};
var i = function () {
  for (var item in obj) {
    return false;//不为空
  }
  return true;//为空
}
console.log(i());

//方法三:jQuery的$.isEmptyObject()
//此方法是jQuery将方法二的for...in进行了封装,此时需要依赖于jQuery
var data = {};
var j = $.isEmptyObject(data);
console.log(j);

8.检测对象的属性是否存在

var k = {};
if(!k.age) {
  console.log('没有age属性');
}

9.直接使用未定义的对象来判断,也会出错

//注意判断或调取时,变量名是否书写正确
if(!obj111){
  console.log('没有obj111这个变量');
  obj111 = {};//Uncaught ReferenceError: obj111 is not defined
}

10.使用in运算符

//obj1 是一个变量,如果当前页面未定义,则 ‘obj1’ in window 会返回false
if(!('obj1' in window)) {
  console.log('没有obj1这个变量');
}

11.使用hasOwnProperty()

//检查一个属性是否是某个对象的自带属性,没有定义对象默认指当前window对象
if(!this.hasOwnProperty('obj2')){
  console.log('没有obj12这个变量'); //当前页面没有定义obj2
  this.obj2 = {};
}
  • 11
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值