Answer

Answer

JavaScript test

Ответ:

elems1.length == 3;
elems2.length == 2;

Объяснение:

По сути оба метода представляют собой поиск элементов в документе. В данном случае ссылок. Однако метод getElementsByTagName() возвращает так называемую "живую коллекцию" элементов, т.е. при каждом вызове он снова выполняет поиск и в коллекцию добавляются элементы, которые появились в документе уже после присвоения.

Метод querySelectorAll() выполняет поиск единожды и, на момент присвоения, находит только два элемента "а". Если же выполнить поиск этим методом после создания нового элемента, querySelectorAll() вернет соответствующую истине коллекцию с тремя элементами.

Данный вопрос, входит в категорию тестовых вопросов компании Yandex, для соискателей на должность JavaScript-программиста.

Код для проверки:

<html> 
<body> 
    <a href="((http://yandex.ru))">Яндекс</a>, 
    <a href="((http://yandex.com))">Yandex</a> 
</body> 
</html> 
var elems1 = document.getElementsByTagName('a'), 
elems2 = document.querySelectorAll("a"); 
 
document.body.appendChild(document.createElement("a")); 
console.log(elems1.length, elems2.length); 

Report Page