В других словах
document.querySelector()
выбирает только первый элемент указанного селектора. Поэтому он не выплевывает массив, это одно значение. Подобно document.getElementById()
, который извлекает только ID-элементы, поскольку идентификаторы должны быть уникальными. document.querySelectorAll()
выбирает все элементы с указанным селектором и возвращает их в массиве. Похоже на document.getElementsByClassName()
только для классов и document.getElementsByTagName()
.
Зачем использовать querySelector?
Используется просто для единственной цели легкость и краткость.
Зачем использовать getElement / sBy? *
Более быстрая производительность.
Почему это различие в производительности?
Оба способа выбора имеют целью создание NodeList для дальнейшего использования. querySelectors генерирует статический NodeList с селекторами, поэтому он должен быть сначала создан с нуля. getElement / sBy * немедленно адаптирует существующий живой NodeList текущего DOM.
Итак, когда использовать какой метод зависит от вас / вашего проекта / вашего устройства.
Infos
Демонстрация всех методов Документация NodeList Тест производительности
Функция !
, предшествующая функции, такая же, как ...
if (stripos($haystack, $needle) == FALSE) {}
Это то же самое, потому что это сравнение ==
, которое не проверяет типы.
Он называется унарным оператором отрицания . Он переворачивает значение Boolean (при необходимости принудительное значение Boolean).
Например ...
! 0; // True
! 1 ; // False
! ''; // True
! true; // False
!! 0 // False
!!
трюк удобен в языках без использования (bool)
. Перевернув значение дважды, вы получите исходную версию Boolean.
! будет работать над сравнением значений, так что это то же самое, что и второе сравнение. потому как ! будут ломать false, 0, null как false, и они не совпадают с типами, которые вы видите. "" может быть исключением для этого, потому что я всегда использую trim ()! = "" для сравнения строк. Я не знаю об этом.
!==
? – Pacerier 8 August 2013 в 00:59