// 通常直接用取反的方法是不准确的,比如判断一个空对象
let a = {}
if(!a){
//!a 的结果是false 不会进入函数执行体 不会打印出来
console.log('我是空对象');
}
//上面这样取反判断空对象 是没有效果 控制台不会打印
//1.1 判断是否为null 或者 undefined 如果用双等比较 两者都可以判断, 如果用全等判断,需要精准区分null undefined 判断了
console.log(typeof null); // object //知识点 typeof null的数据类型 返回的是一个对象字符串
let b = null
console.log(b == null); //true
console.log(b == undefined); //true
console.log(b === null); //true
console.log(b === undefined); //false
//1.2 判断空对象{}
// 使用for... in 遍历,hasOwnProperty()方法,遍历自身存在的属性 如果没有自身属性,返回为true
function isEmpty(obj){
for (let key in obj) {
if(obj.hasOwnProperty(key)){
return false
}
}
return true
}
var one = {}
var two = {name:'gyb'}
console.log(isEmpty(one)); //true
console.log(isEmpty(two)); //fasle
//2. 判断空数组 (arr instanceof Array && arr.length === 0)
// 直接判断 [] 不准确 可以判断数组的长度length
if(![]){
// 判断[]取反 不会进入函数执行体
console.log('我是空数组');
}
let arr = []
if(arr instanceof Array && arr.length === 0){ //判断是数组类型,且长度为0
console.log('我是空数组');
}
//3.判断空字符串 (str === '' || str.trim().length === 0)
// str === '' || str.trim().length === 0
let myStr = ''
if(myStr === '' || myStr.trim().length === 0){
console.log('我是空字符串');
}
// 4.判断数字类型 0 或者NaN (!Number(number) && number) === true
let number = 0
if(!(Number(number) && number) === true){
console.log('我是数字 0 ');
}
// 取反为true 的类型有 null undefined '' 0 +0 -0 NaN
// NaN 与任何数据比较 返回都是false
JS常用判空方法
最新推荐文章于 2024-08-20 14:05:28 发布