Требования к именованию параметров функции javascript - PullRequest
0 голосов
/ 08 февраля 2011

Я должен был прочитать об аргументах в функциях и о том, как они являются переменными и / или объектами, и передать значение в миллион раз, а примеры из реальной жизни продолжают отбрасывать меня. Ключевое слово «this» в этом примере указывает на объект функции, являющийся элементом формы. ОК, понял.

Теперь функция вне обработчика события window.onload имеет параметр с именем "frm". Мой вопрос заключается в том, необходимо ли дать этому параметру то же имя, что и идентификатору элемента формы, который будет передан ему (в данном случае 'frm')? Я думал, что это не имеет значения. Для всего, что бы это ни значило, внутри аргумента можно поместить что угодно, лишь бы оно повторно использовалось как локальная переменная внутри самой функции.

window.onload = function() {
    // validation for submit button
    document.frmFlight.onsubmit = function() {
        //console.log("what is 'this'?: "+this);
        return validate(this);
    }       
}

//----------------------------------------------------------
function validate(frm) {
    var valid = true;
    return valid;
}   

Ответы [ 5 ]

1 голос
/ 08 февраля 2011

Имена параметров функции являются произвольными. Выбранное вами имя не имеет никакого отношения к тому типу вещей, который впоследствии будет передан в функцию.

У меня вопрос: нужно ли называть аргумент идентификатором элемента формы в этом случае 'frm'?

Похоже, вы спрашиваете, должно ли имя параметра в "validate" соответствовать идентификатору элемента DOM, который будет передан ему. (Я бы повторил это, чтобы использовать слово менее перегруженное, чем «вызов».)

Ответ - нет.

Общая концепция, которую нужно понять, заключается в том, что ваша функция не знает о типах вещей, которые ей будут переданы. Ваша функция «validate» может принимать аргумент любого типа во время выполнения. Название параметра не имеет значения.

1 голос
/ 08 февраля 2011

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

function validate(frm) {
    // ...
}

function validate(theForm) {
    // ...
}

function validate(foo) {
    // ...
}

Ваше использование выше просто отлично, потому что, когда вы устанавливаете обработчик событий так, как вы это делаете (присваивая функцию свойству onsubmit), когда событие вызывается, функция будет вызываться так, чтобы this ссылается на элемент DOM для формы. Предполагая, что для этого функция validate использует свой аргумент (независимо от того, как она ее вызывает), вы в хорошей форме.

0 голосов
/ 08 февраля 2011

Я не знаю, относится ли это к вашему вопросу, но учитывая вашу ссылку на ключевое слово this, если вы должны были сделать следующее в обработчике onsubmit:

return validate.call(this);

Тогда в вашей функции проверки 'this' будет ссылаться на форму, например ::100100

function validate(){
    var valid = this.elements[0].length > 0;
    return valid;
} 

Кроме того, в этой ситуации вы также можете сделать:

document.frmFlight.onsubmit = validate;
0 голосов
/ 08 февраля 2011

Да, ваш вопрос не слишком ясен, но имя параметра (в данном случае frm) - это просто ссылка на то, что вы передадите. Пример:

function validate(frm){
  return true;
}

validate('Bob')
validate(3)
0 голосов
/ 08 февраля 2011

frm относится к переменной, переданной этой функции. В вашем примере this объект из функции onLoad. В функции проверки ее можно вызывать как угодно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...