首页 > 技术文章 > JS参数使用带参数的方法

sgzs 原文

        大家都知道,在JS之中,一个变量的生命周期不是以大括号为界限的,所以即使是使用在循环或判断中的变量,外部也可以使用。可如果我们在循环或变量中使用了方法,而且这个方法使用了循环中的变量,那么后面的代码是可以修改这个变量的值的,而不是,将值的内容完全写死在了循环里面的方法中。那么解决这个问题的一种方法就是,将方法写出来,接收一个参数就可以了。

        可是,在JS中传递的参数如果是方法,那么后面不能加上小括号,如果加上的话,就认为是调用了这个方法,会立即执行,这样一来,就更别说是传递参数了,那么如果解决这个问题呢?

错误的代码:

1 window.onload = function() {
2     function fun(x) {
3         alert(x);    
4     }
5     $("#btn").click(fun(5));
6 }

        其实啊,如果你以前是这样写的,那么就说你对这个原理还不清楚!

        click()方法接收的是一个参数,就像JAVA一个,你完全可以写一个方法进去,然后click()得到的参数就是这个方法的返回值。所以,如果想要传递一个方法进去,只需要在你调用的方法那里加上一个return function(){}就可以了,当然这个方法也是可以带参数的。这样一来,这个方法就会返回一个方法。你只需要将你想要的代码写在return的方法里面就可以了。

正确的代码:

 1 $(document).ready(function() {
 2     function method(a) {
 3         return function() {
 4             fun(a);
 5         }
 6     }
 7     function fun(num) {
 8         alert(num);
 9     }
10     function() {
11         $("btn").click(method(x));
12     }
13 });

推荐阅读