如何在函数内传递参数?

时间:2012-07-02 16:03:37

标签: javascript jquery

我开始学习Jquery,但我无法理解函数参数:( 如果您查看我的第一个代码并运行它:我的脚本将工作 (没有参数)。如果您查看我的第二个代码(带参数)并运行它:第二个脚本 也将工作!!

我的第一个问题:我在第二个脚本中设置参数了吗?
第二个问题:我怎么能检查是我的参数 设置 正确传递 到我的功能?
附:抱歉是NOOB,谢谢!!

   //First code (WITHOUT PARAMETERS!!!) 
   $(document).ready(function () {
       var addclass = $('p:first');

       function AddClass() {
           addclass.addClass('first');
           if (addclass.is($('.first'))) {
               alert('here');
           }
           else {
               alert('not here');
           }
       }
       $('.button').click(function () {
           AddClass(addclass);
       });
   });
   //Second code (WITH PARAMETERS)
   $(document).ready(function () {
       var addclass = $('p:first');

       function AddClass(addclass) {
           addclass.addClass('first');
           if (addclass.is($('.first'))) {
               alert('here');
           }
           else {
               alert('not here');
           }
       }
       $('.button').click(function () {
           AddClass(addclass);
       });
   });

2 个答案:

答案 0 :(得分:2)

你的第二个参数是正确的,并检查传递给函数的任何参数:

arguments.length

例如:

function myfunc() {
   alert( arguments.length ); //output: 1, because you passed one argument

   // and to get that

   var myarg = arguments[0];
}

myfunc(someVar);

如果你没有传递任何论据,那么:

function myfunc() {
   alert( arguments.length ); //output: 0, because you passed no argument
}

myfunc();

对于你的功能:

  function AddClass(addclass) {

                      ^-- declaring addclass is not necessary if you use like following

       // checking for argument

       if( arguments.length ) {
         // arguments[0] will give you addclass
         // you may not write addclass to function like above
       }

       addclass.addClass('first');
       if (addclass.is($('.first'))) {
           alert('here');
       }
       else {
           alert('not here');
       }
   }

使用addclass参数调用函数:

   $('.button').click(function () {
       AddClass(addclass);
   });

答案 1 :(得分:0)

是的,你正确地传递了你的第二个函数的参数,看看传递给你的函数的参数可以通过两种方式看到它们:

单独使用数组表示法

function AddClass(addClass) {
    console.log(arguments[0]); // This will show you the first parameter
    // Some code...
}

使用jQuery函数$.each();

function AddClass(addClass) {
    $.each(arguments, function (key, value) {
        console.log(value); // Output the value of all of your arguments
    });
}

在这种情况下,如果传递或不传递参数并不重要,因为您在AddClass函数中访问和修改的addClass变量在同一范围内。

您应该查看这篇文章JavaScriptVariableScope,了解实际代码中发生的情况以及两个代码示例正常工作的原因。