Как мы можем назначить переменную, а также определить, является ли результат нулевым или ложным в одном выражении if?
function getNodes(selector) {
var nodeList = document.querySelectorAll(selector);
if(!nodeList.length) { return null; } else { return nodeList; }
}
var divs;
if( ! divs = getNodes('div') ) { // ReferenceError: invalid assignment left-hand side
console.log('no divs found');
}
if( divs = getNodes('div') && !divs ) { // does not work
console.log('no divs found');
}
if( divs = getNodes('div') && divs==null ) { // does not work
console.log('no divs found');
}
<p>
no divs here
</p>
Просто, if(divs = getNodes('div'))
работает, но это не то, что я хочу. Мне нужно поймать, если он null или назначить его в одном утверждении.
Решение 1, if( !(divs = getNodes('div')) )
Решение 2 if( (divs = getNodes('div')) == null )
Всем спасибо
divs = getNodes('div')
будет в основном возвращать значение, присвоенное divs
. То, как вы можете сделать a = b = 2
.
В вашем случае вы можете в основном сделать:
и поэтому ((div = getNodes('div')) == null)
оценивается как true
.
Это означает, что в основном вы можете:
if((div = getNodes('div')) === null){
//do Whatever
}
Или, если вы просто хотите проверить, является ли его null, и вы знаете, что он никогда не будет оценивать значение false (или если false также является условием ошибки), вы можете:
if(!(div = getNodes('div'))){
//do whatever
}
Это должно делать то, что вы пытаетесь выполнить.
function getNodes(selector) {
var nodeList = document.querySelectorAll(selector);
if(!nodeList.length) { return null; } else { return nodeList; }
}
var divs;
if( !(divs = getNodes('div')) ) { // ReferenceError: invalid assignment left-hand side
console.log('no divs found');
}
console.log(divs);