2013-11-07 2 views
0

Я задавался вопросом, в чем отличие использования jQuery или его использования, возможно, рассматривают следующую задачу. Я еще не нашел ответа.Когда я должен вызывать анонимные функции через jQuery и когда через обычный JavaScript?

JQuery:

jQuery(function() { alert("Hello World!"); }) 
$(function() { alert("Hello World!"); }) 

Pure JavaScript:

(function() { alert("Hello World!"); })() 

В чем разница? Когда следует использовать какой подход? Спасибо!

+0

В двух первых примерах нет разницы, один ссылается на jQuery, другой ссылается на псевдоним $, который является таким же, как у jQuery, оба ждут, когда DOM будет готов. Третий - это почти то же самое, но без jQuery, и выполняется немедленно, и я не уверен, что у меня возникает вопрос, так как разница должна быть довольно очевидной? – adeneo

+0

Да, это довольно очевидно. Тем не менее, остается вопрос, существует ли разница в том, как они выполняются. Я уже заметил, что использование jQuery возвращает объект, в то время как чистое решение JavaScript возвращается неопределенным. – Xiphias

ответ

3

В общем, $(function() { alert("Hello World!"); }) ждет $(document).ready(), а другая функция (IIFE) срабатывает немедленно.

НО, но обернутая jQuery функция является очень специфичным прецедентом (ожидание DOM, используя jQuery); ваши два примера в противном случае не связаны. Не путайте их как две версии одной и той же вещи.

0
$(function(){ 
    alert("hello world"); 
}); 

короткая стрелка:

$(document).ready(function(){ 
    alert("hello world"); 
}); 

так он будет выполнен после того, как DOM нагрузок.

, пока вы выполняете чисто js перед загрузкой DOM.

0

Версия jQuery привязывается к выполнению после загрузки DOM. Вид в просто закрытии выполняется, как только он определяется. Поэтому, если вы хотите, чтобы он выполнялся немедленно, используйте вторую версию, если она должна подождать, пока все будет загружено, используйте первую.

По крайней мере, это то, что у меня с головы.

0

Основное отличие состоит в том, что функции jQuery выполняются после загрузки DOM. И чистая jambda-функция JavaScript выполняется немедленно (в ее контексте).

Вторая функция jQuery является сокращением для первого.

Вы все еще можете поместить функцию лямбда JavaScript в оболочку jQuery. Это означало бы, что функция лямбда будет выполняться сразу после загрузки DOM (благодаря тому, что jQuery позаботится об этом).