Тестирование classlist.contains перед попыткой classlist.remove?Html

Программисты Html
Ответить Пред. темаСлед. тема
Anonymous
 Тестирование classlist.contains перед попыткой classlist.remove?

Сообщение Anonymous »

За пару дней до этого поста я задал вопрос об итерационных детях узела по сравнению с использованием Queryselectorall и одного из комментариев, которые указали, что пример, который я сделал, не был полностью справедливым, потому что, когда я удалял класс из каждого дочернего элемента родителя, я не сначала не проверял, что детский класс содержал класс, но я думаю, что я подумал, что я подумал, что я подумал, что я подумал, но я подумал, что я подумал, но я подумал, что я подумал, но я подумал, что я подумал, но я подумал, что я подумал, но я подумал, что я подумал, но я подумал, но я подумал, что я подумал, но я подумал, но я подумал. Mdn, что это не было полезно, потому что метод удаления просто повторяет то, что содержит метод . У меня сложилось впечатление, что это было менее эффективно, что, конечно, отличается от комментариев к упомянутому вопросу. Принятый ответ на этот 9-летний вопрос, по-видимому, согласуется с тем, что я думал, я прочитал, заявив, что: < /p>

Явно проверка бессмысленна. Это пустая трата времени и раздувает ваш код. и кажется, что тестирование с использованием содержит перед попыткой удалить примерно в три раза быстрее, чем просто выполнение remove .
const c = p.children;
const l = c.length;
for (let i = 0; i < l; i++) {
c.classList.remove('sel');
}
// versus
const c = p.children;
const l = c.length;
for (let i = 0, cL; i < l; i++) {
cL = c.classList;
if( cL.contains('sel') ) cL.remove('sel');
}
< /code>
Мой вопрос в том, почему? Указывает ли это, что эти два метода не используют один и тот же код, так что удаление не содержит с добавленным шагом удаления класса, если он найден, но содержит другие данные для определения и быстрее? Содержит ли использовать то же самое? Я также задал вопрос около двух лет назад, но не знал достаточно, чтобы правильно его спросить. Возможно, я просто медленно застрял, но я бы не ожидал «если содержит, то удалите», чтобы быть быстрее, чем просто удалить, от чтения документации по MDN. И это может быть экземпляром ранней оптимизации, который не требуется до тех пор, пока не возникнет проблема. Проверьте не только! attr но! (attr && attr-> содержит (atoken)) . Однако, когда я пишу это, я сейчас вижу хотя бы одно важное отличие, которое содержит то, что содержит принимает только аргумент, чтобы проверить наличие одного класса, и удалить может удалить несколько классов из ClassList. Это должно было быть очевидно для меня. Таким образом, не очень умный вопрос с моей стороны. < /P>
bool nsDOMTokenList::Contains(const nsAString& aToken) {
const nsAttrValue* attr = GetParsedAttr();
return attr && attr->Contains(aToken);
}

void nsDOMTokenList::Remove(const nsTArray& aTokens,
ErrorResult& aError) {
CheckTokens(aTokens, aError);
if (aError.Failed()) {
return;
}

const nsAttrValue* attr = GetParsedAttr();
if (!attr) {
return;
}

RemoveInternal(attr, aTokens);
}


Подробнее здесь: https://stackoverflow.com/questions/797 ... ist-remove
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Тестирование classlist.contains перед попыткой classlist.remove?
    Anonymous » » в форуме Javascript
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Тестирование classlist.contains перед попыткой classlist.remove?
    Anonymous » » в форуме Html
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Тестирование classlist.contains перед попыткой classlist.remove?
    Anonymous » » в форуме Html
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Тестирование classlist.contains перед попыткой classlist.remove?
    Anonymous » » в форуме Javascript
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Java - collections.remove () vs iterator.remove () с точки зрения производительности
    Anonymous » » в форуме JAVA
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Html»