Jaka jest różnica między tymi dwoma.
$(document).ready(function(){ ... });
(function(){ ... })();
Czy obie te funkcje są wywoływane w tym samym czasie? Wiem, że document.ready zostanie uruchomiona, gdy cała strona HTML zostanie wyrenderowana przez przeglądarkę, ale co z drugą funkcją (samo wywołująca funkcja anonimowa). Czy czeka, aż przeglądarka zakończy renderowanie strony, czy jest wywoływana przy każdym napotkaniu?
javascript
jquery
Ashit Vora
źródło
źródło
$(function() {});
jest równoważne$(document).ready(function() {});
Odpowiedzi:
$(document).ready(function(){ ... });
lub krótkie$(function(){...});
Ta funkcja jest wywoływana, gdy
DOM is ready
oznacza to, że możesz na przykład rozpocząć zapytanie o elementy..ready()
użyje różnych sposobów w różnych przeglądarkach, aby upewnić się, że DOM naprawdę JEST gotowy.(function(){ ... })();
To nic innego jak funkcja, która uruchamia się tak szybko, jak to możliwe, gdy przeglądarka interpretuje Twój
ecma-/javascript
. Dlatego jest bardzo mało prawdopodobne, abyś mógł tu z powodzeniem działaćDOM elements
.źródło
(function(){ ... })();
czy żaden kod JS nie jest uruchamiany tak szybko, jak to możliwe? Gdybyś powiedział, żealert()
wewnątrz SIAF lub poza nim, czy efekt nie byłby taki sam?(function(){...})();
zostanie wykonany, gdy tylko zostanie napotkany w skrypcie JavaScript.$(document).ready()
zostanie wykonany po załadowaniu dokumentu.$(function(){...});
jest skrótem$(document).ready()
i robi dokładnie to samo.źródło
$(document).ready(function() { ... });
po prostu wiąże tę funkcję zeready
zdarzeniem w dokumencie, więc, jak powiedziałeś, po załadowaniu dokumentu zdarzenie jest wyzwalane.(function($) { ... })(jQuery);
jest w rzeczywistości konstrukcją JavaScript, a wszystko, co robi ten fragment kodu, to przekazujejQuery
obiektfunction($)
jako parametr i uruchamia funkcję, więc wewnątrz tej funkcji$
zawsze odwołuje się dojQuery
obiektu. Może to pomóc w rozwiązaniu konfliktów przestrzeni nazw itp.Więc # 1 jest wykonywany po załadowaniu dokumentu, podczas gdy # 2 jest uruchamiany natychmiast, z
jQuery
obiektem nazwanym$
skrótowo.źródło
Poniższy kod zostanie wykonany, gdy DOM (model obiektowy dokumentu) będzie gotowy do wykonania kodu JavaScript.
Krótka ręka dla powyższego kodu to:
Kod pokazany poniżej jest samo-wywołującą się anonimową funkcją JavaScript i zostanie wykonany, gdy tylko przeglądarka go zinterpretuje:
Przedstawiona poniżej funkcja samo-wywołująca jQuery przekazuje globalny obiekt jQuery jako argument do
function($)
. Pozwala to$
na użycie lokalnie w ramach samowywołującej się funkcji bez konieczności przechodzenia przez globalny zasięg w celu znalezienia definicji. jQuery nie jest jedyną biblioteką, z której korzysta$
, więc zmniejsza to potencjalne konflikty nazw.źródło
document.ready działa po „skonstruowaniu” DOM. Funkcje auto-wywołujące się działają natychmiastowo - jeśli zostaną wstawione do
<head>
, przed zbudowaniem DOM.źródło
<head>
, a reguły nie różnią się po skonstruowaniu początkowego DOM.