Как вы знаете, что вы должны использовать функцию () {}? - PullRequest
1 голос
/ 11 июля 2009

код 1

$(document).ready(function() {
    $('.poem-stanza').addClass('highlight');
});

код 2

$(document).ready(
    $('.poem-stanza').addClass('highlight');
);

Ответы [ 5 ]

3 голосов
/ 11 июля 2009

Вы читаете документацию по методу, который вы вызываете (метод ready в данном случае) и видите, какое значение он ожидает.

Если он ожидает функцию, используйте ваш первый пример.

Если ожидается объект jQuery *, используйте второй пример (поскольку возвращаемое значение из метода addClass является объектом jQuery).

* Я предполагаю, что вы используете jQuery, так как я думаю, что это единственная библиотека, функции которой названы так. Хотя я могу ошибаться, $ - глупое имя для функции .

0 голосов
/ 11 июля 2009

Если вам нужна функция обратного вызова, используйте ключевое слово function. Когда вы используете такие методы, как ready и click, вы не хотите, чтобы код запускался при настройке события, но когда событие происходит, поэтому вам нужна функция обратного вызова.

Использование анонимной функции аналогично использованию именованной функции, которую вы определили ранее. В таком примере легче следить за тем, что происходит:

function onReady() {
    $('.poem-stanza').addClass('highlight');
}

$(document).ready(onReady);
0 голосов
/ 11 июля 2009

Как говорили другие парни, вам нужно посмотреть документацию, чтобы увидеть, какие параметры принимает функция. Однако важная часть здесь такова: если у вас есть оператор, он исполняется, когда интерпретатор встречает его. Если вы определяете функцию и передаете ее в функцию готовности, функция готовности решает, когда ее выполнять. В данном конкретном случае, когда документ готов. Другим примером является setTimeout, который ожидает функцию и количество миллисекунд в качестве параметров.

Правило таково: если вы хотите передать некоторый код какой-то другой функции, вы должны заключить его в функцию. Если вы используете (развернутый) оператор, он будет выполнен, а результат передан функции.

0 голосов
/ 11 июля 2009

Хех, вот как это: D

Нет, серьезно, когда нужно что-то сделать внутри готово (); или аналогичные методы, вы используете. функция. Другие методы принимают параметры. Документы предоставят вам подробную информацию.

0 голосов
/ 11 июля 2009

Если функция принимает функцию в качестве параметра, код 2 не будет работать, потому что

$('.poem-stanza').addClass('highlight');

это не определение функции (это утверждение)

Для создания объекта, представляющего функцию, должен использоваться один из следующих синтаксисов:

function myFunc() {
}

или

var myFunc = function() {
}

или

var myFunc = new Function("...javascript code...");

После одного из приведенных выше определений myFunc будет содержать объект, представляющий функцию.

...