Почему метод inject() всегда логает в консоль ScssItd, причем даже если тега inject не сущ-ет
class InjectIo{
injections =0;
constructor(){
}
inject(){
let inj=document.getElementsByTagName('inject')
if(inj){
console.log("ScssItd")
}else{
throw new Error('Injection failure')
}
}
}
let inj=new InjectIo()
inj.inject()
Ответы (1 шт):
Автор решения: yar85
→ Ссылка
Потому что оператор if автоматически приводит указанное в нем выражение к типу boolean, а метод getElementsByTagName возвращает массивоподобный объект типа HTMLCollection (который, как и любой другой объект кроме спецзначения null, является истинным значением - даже когда коллекция пуста).
Другими словами: потому что Boolean(любойОбъектКромеNull) === true, всегда.
Вместо проверки истинности значения if(inj), можно проверять длину коллекции: if (inj.length > 0) или просто if (inj.length).