空值判断的重要性

一、【示例1】

  1. if([]) {
  2. console.log('true');
  3. } else {
  4. consoel.log('false');
  5. }
  6. // res:true
  7. if({}) {
  8. console.log('true');
  9. } else {
  10. consoel.log('false');
  11. }
  12. // res:true

1、看这段代码,不知道有没有小伙伴会认为输出false,以上对象和数组虽然为空,但是会被转换为true,所以在写一些判断条件时候要格外注意。

空值判断

空数组判断

一、数组为空很简单,通过上面的类型判断是数组类型,然后它的length>0即可

空对象判断

Object.getOwnPropertyNames()

一、使用Object.getOwnPropertyNames()。返回值是对象中属性名组成的数组

  1. var obj = {}
  2. Object.getOwnPropertyNames(obj).length === 0; // true

Object.keys() (推荐)

一、使用Object.keys()。ES6的新方法,返回值同样是属性名组成的数组

  1. var obj = {}
  2. Object.keys(obj).length === 0; // true

for…in… 循环判断

  1. var obj = {};
  2. function judgeObj(obj) {
  3. for(let key in obj) {
  4. return false
  5. }
  6. return true
  7. }
  8. judgeObj(obj); // true

json 对象转换为字符串(不推荐)

一、将json对象转换为字符串,然后比较该字符串与”{}”是否相等

  1. var obj = {};
  2. var a = JSON.stringify(obj);
  3. a === "{}"; // true
  4. // a === "{ }"; // false
  5. // a === {}; // false

直接使用对象属性判断(不推荐)

一、前提是要确定如果obj不为空,一定会包含name属性

  1. var obj = {};
  2. obj && obj.name ? '不为空' : '为空'; //