js中的if条件的简写总结

1、布尔判断

var b=true

if(b) 即 if(true) 相当于 if(b===true) 的简写

2、数值判断

if(n) 相当于 if(n!==0 && !isNaN(n)) 的简写

3、判断字符串是否为空

if(str) 相当于 if(str!=='') 的简写

4、判断对象是否存在

if(obj) 相当于 if(obj!==undefined && obj!==null) 的简写

//如果对像不存在
if(!obj){
    console.log('对象不存在!')
    //相当于if(obj===undefined || obj===null)的简写
}

4.1、判断对象是否为空。if(Object.keys(obj).length>0) 没有简写。这是ES6的写法。

var obj={}
if(Object.keys(obj).length!==0){
    //对象不为空
    console.log(true)
}else{
    //对象为空
    console.log(false)
}

如果ES5,可以用for in 方法或转json字符串来判断obj对象是否为空。

//定义全局变量,定义一个对象person
var person = {name:'张三'}

//定义一个方法,判断对象是否为空。
function isOwnProp(obj) {
    //遍历对象属性。
    //如果有属性就进入循环,找到一个属性就返回true并退出循环和结束函数。
    for (let key in obj) {
        return true
    }
    return false
}

//调用方法进行判断
if (isOwnProp(person)) {
    console.log('对象不为空,拥有自有属性!')
} else {
    console.log('对象为空!')
}

或者对象转字符串

扫描二维码关注公众号,回复: 15467323 查看本文章
if(JSON.stringify(obj)==='{}'){
    console.log('对象为空!')
}
5、length判断数组是否为空。
var arr = []
if (arr.length > 0) {
    //数组不为空
} else {
    //数组为空
}
字符串是特珠数组,除了拥有数组下标,比如str[0],也拥有length属性。因此也可以用if(str.length>0)来判断字符串是否为空。
length不能用来判断对象是否存在,因为对象没有自带的length属性,即obj.length是undefined。而且当obj=null或undefined时执行obj.length程序会抛异常而报错。
6、可选链操作符( ?. )

if(obj?.age) 相当于 if(obj && obj.age)的简写

即if( obj != null && obj != undefined && 'age' in obj && obj.age ) 的简写

?.可以多个拼接使用。允许读取位于对象链深处的属性的值,而不必明确验证链中的每个引用是否有效。

let name = obj?.sub?.item?.name 

这个代码的作用是即使obj、sub或item是undefined也不会报错。

前提条件,obj必须先声明,否则还是会抛异常。

也就是,如果obj对象中有sub属性,sub属性下面又有item属性,item对象又有name属性,则返回name值,否则返回undefined。不管结果如何,代码都正常执行,不会执异常。

如果没有使用?.,即let name=obj.sub.item.name,只要obj、sub、item其中有一个是undefined,程序就会抛引用异常,即xxx is not defined飘红报错。

猜你喜欢

转载自blog.csdn.net/qq_21379779/article/details/128574646
今日推荐