Краткая сводка условий if в js

1. Булево суждение

вар б = правда

if(b) is 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. Длина определяет, является ли массив пустым.
var arr = []
if (arr.length > 0) {
    //数组不为空
} else {
    //数组为空
}
Нить — это массив специальных бусин, который помимо индекса массива, такого как str[0], также имеет атрибут длины. Следовательно, if(str.length>0) также можно использовать для определения того, пуста ли строка.
length нельзя использовать для определения существования объекта, потому что объект не имеет собственного свойства длины, то есть obj.length не определено. А когда 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 не определены.

Предварительное условие, obj должен быть объявлен первым, иначе все равно будет выброшено исключение.

То есть, если в объекте obj есть податрибут, под податрибутом есть атрибут элемента, а в объекте элемента есть атрибут имени, то возвращается значение имени, в противном случае возвращается значение undefined. Независимо от результата код выполняется нормально, и исключения не выполняются.

Если ?. не используется, то есть пусть name=obj.sub.item.name, пока один из объектов obj, sub и item не определен, программа выдаст ссылочное исключение, то есть xxx не определено и сообщить об ошибке.

Je suppose que tu aimes

Origine blog.csdn.net/qq_21379779/article/details/128574646
conseillé
Classement