Ответ 1
Во-первых,
document.querySelector("#elem");
Имеет преимущество в том, что, в отличие от document.getElementId, он может возвращать классы. Однако полезность этого значительно уменьшается из-за того, что он возвращает только первый объект с этим именем класса, поэтому вы можете просто использовать идентификатор, если вы специально не ищете первый объект с этим именем класса. если вы используете,
document.querySelectorAll
Однако я верю (может быть, ошибаюсь), он возвращает все элементы с этим именем класса как массив, где регулярный запросSelector эквивалентен запросуSelectorAll [0]. Еще одно преимущество заключается в том, что вы можете запускать css3-запросы через него, что может быть весьма полезным.
Во-вторых,
document.getElementById("elem");
Имеет очень хорошее преимущество над queryselector в том смысле, что он почти в 5 раз быстрее, поэтому, если вы сидите там с несколькими тысячами строк кода, и вы хотите оптимизировать указанный код, тогда getElementById - это путь.
Наконец,
document.querySelector("[id=elem]");
Я лично не вижу необходимости использовать это в любой ситуации. Если вам нужен запросSelector, почему бы просто не использовать #? Это в точности эквивалентно вашему первому примеру querySelector, однако в нем много бесполезных символов.
Изменить: просто чтобы быть ясным, в общем, вам, вероятно, лучше использовать document.getElementById.