JS常用判空方法

  // 通常直接用取反的方法是不准确的,比如判断一个空对象 
        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

你可能感兴趣的:(javascript,html5,html)