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

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

错误的代码:

 window.onload = function() {
function fun(x) {
alert(x);
}
$("#btn").click(fun(5));
}

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

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

正确的代码:

 $(document).ready(function() {
function method(a) {
return function() {
fun(a);
}
}
function fun(num) {
alert(num);
}
function() {
$("btn").click(method(x));
}
});

最新文章

  1. #define与typedef在重定义类型中的区别
  2. 2016福州大学软件工程 团队Git Review
  3. Visual C++ 的代码折叠
  4. Mac 使用 SSH 免密连接服务器
  5. 一起买beta版UI测试
  6. 【初识 JQMobile 小小总结】
  7. 百度地图API说明
  8. 创建Car类,实例化并调用Car类计算运输的原料量是否足够
  9. poj 3662(经典最短路)
  10. JQuery获取浏览器窗口的高度和宽度
  11. js 注册手机摇动事件
  12. jsp中的contentType与pageEncoding的区别和作用
  13. 比较好的前端方法库及一些vue如何引入静态文件
  14. 深度理解 Virtual DOM
  15. for循环 重点题
  16. Project 10:简单图像的绘制
  17. Win7添加php环境变量.
  18. Sql Server2014数据库清理日志
  19. DataGrid 查不出数据 注意事项
  20. 掌握Docker命令-Docker for Web Developers(4)

热门文章

  1. 淘宝对接API
  2. 美化select的jquery插件
  3. asp.net后台的一些操作
  4. 表设计与SQL优化
  5. 设置启动页面-Launch Image
  6. windows驱动编程入门(第一个程序)
  7. Java-----隐藏手机号中间四位
  8. 克隆虚拟机后修改MAC地址
  9. MySQL 初学笔记 ② -- MySQL安装
  10. ORACLE集合常用方法