В чем разница между document.ready и async?

Скрипт в async загружается после загрузки страницы и (document).ready выполняет скрипт в готовой DOM, но в чем разница? И какой из них ускоряет загрузку страницы?

<script>   
  $(document).ready(function(){
    //some code
  }); 
</script>

ПРОТИВ

<script async>   
    //some code
</script>

Вы можете сослаться на этот ответ «stackoverflow.com/questions/28934845/…». Вы можете получить четкое представление.

Senthuja 31.12.2018 03:11
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
1
271
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

За

<script async>   
    //some code
</script>

атрибут async будет проигнорирован, потому что async - это только значимый, когда <script> имеет атрибут src:

This attribute must not be used if the src attribute is absent (i.e. for inline scripts). If it is included in this case it will have no effect.

Итак, <script async> в вашем вопросе заблокирует синтаксический анализ HTML после обнаружения тега - он вообще не будет работать асинхронно.

Если тег сценария сделал имеет src, то тег async загрузит сценарий асинхронно (синтаксический анализ HTML не заблокирован), а затем выполнит сценарий, как только сценарий будет загружен (независимо от того, была ли страница загружена первой). . См. здесь

$(document).ready(function(){ требует, чтобы событие DOMContentLoaded сработало до запуска содержащей его функции, а DOMContentLoaded запустится только после того, как HTML будет полностью проанализирован (хотя не обязательно до того, как все Ресурсы будут загружены, например изображения и т. д.).

Таким образом, сценарий async с тегом src может выполняться раньше, чем $(document).ready(function(){.

Обратите внимание, что есть тег defer, который является почти то же самое как $(document).ready(function(){ - сценарий с тегом defersrc) запускает прямо перед, когда запускается событие DOMContentLoaded.

Согласно MDN, асинхронный режим не действует для встроенного тега скрипта, поэтому тот факт, что сработал, вероятно, означает, что скрипт находится внизу html.

document.ready - это устаревший способ, которым jQuery позволяет создавать прослушиватель DOMContentLoaded, и лучше сделать jQuery(function($) {...} и включить в него код.

Другие вопросы по теме