- 52浏览
- 2023-05-07
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('对象为空!')
}
或者对象转字符串
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飘红报错。
版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、本文由会员转载自互联网,如果您是文章原创作者,请联系本站注明您的版权信息。