JS参数使用带参数的方法
大家都知道,在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 });