【问题标题】:javascript function parameter naming requirementsjavascript函数参数命名要求
【发布时间】:2011-02-08 15:31:30
【问题描述】:

我一定已经阅读过函数中的参数以及它们是如何成为变量和/或对象以及传递值一百万次的内容,而现实生活中的例子总是让我感到厌烦。本例中的关键字“this”指向函数的对象,即表单元素。好的,明白了。

现在 window.onload 事件处理程序之外的函数有一个名为“frm”的参数。我的问题是是否有必要给这个参数赋予与将传递给它的表单元素的 id 相同的名称(在本例中为“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;
}   

【问题讨论】:

  • 关于“frm”的问题恐怕不太清楚,你能再解释一下吗?

标签: javascript function arguments


【解决方案1】:

不清楚你到底在问什么,但是你在函数签名中给出的参数名称与你可能传递给函数的任何东西的名称没有任何关系 .它可以(几乎)是你想要的任何东西。这些都是等价的:

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

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

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

您在上面的使用很好,因为当您以您的方式设置事件处理程序时(通过将函数分配给 onsubmit 属性),当事件触发时,函数将被调用,使得 @987654323 @ 引用表单的 DOM 元素。假设这就是 validate 函数使用其参数的目的(不管它如何称呼它),那么您的状态就很好。

【讨论】:

  • ;是的,这回答了我的问题。它看起来很重要,但看起来并不重要。谢谢!
【解决方案2】:

函数参数名称是任意的。您选择的名称与后来传递给函数的事物类型没有任何关系。

我的问题是,在这种情况下是否需要将参数称为表单元素的 id 'frm'?

听起来您在问“validate”中的参数名称是否需要与将传递给它的 DOM 元素的 ID 匹配。 (我会重新声明这一点,以使用比“呼叫”更轻的词。)

答案是否定的。

要理解的一般概念是,您的函数不知道将传递给它的事物的类型。您的函数“验证”可以在运行时采用任何类型的参数。参数名称无关紧要。

【讨论】:

  • 好吧!是的,这是我的问题,正是我的课程让我感到困惑。我基本上需要确认这无关紧要。
【解决方案3】:

frm 指的是传递给该函数的变量。在您的示例中,来自 onLoad 函数的 this 对象。在 validate 函数中,它可以被称为任何你想要的。

【讨论】:

    【解决方案4】:

    是的,你的问题不太清楚,但参数名称(在本例中为 frm)只是对你将传入的内容的引用。示例:

    function validate(frm){
      return true;
    }
    
    validate('Bob')
    validate(3)
    

    【讨论】:

      【解决方案5】:

      我不知道这是否与您的问题相关,但如果您要在 onsubmit 处理程序中执行以下操作,请参考“this”关键字:

      return validate.call(this);
      

      然后在您的验证函数中,“this”将引用表单,例如:

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

      此外,在这种情况下,您还可以这样做:

      document.frmFlight.onsubmit = validate;
      

      【讨论】:

        猜你喜欢
        • 2010-09-29
        • 1970-01-01
        • 2016-06-01
        • 1970-01-01
        • 2013-07-31
        • 2013-07-09
        • 1970-01-01
        • 1970-01-01
        • 2019-11-11
        相关资源
        最近更新 更多