Javascript;函数(x,y,z),对如何传递值感到困惑
Javascript; function (x,y,z), confused on how values are passed
我搜索和阅读关于函数的任何程度。我看到我的问题得到了回答,但还没有了解到细节。我学编程还不到一年。我不明白r c和e是怎么得到值的。Javascript如何知道在以后调用代码时使用"r"answers"c"做什么?"e"是如何在最后的函数中结束的?也许我对这个问题的理解有点过头了,但也许不是。由于
game.makeKeydown = function (r, c) {
return function (e) {
return game.onKeydown(e, r, c);
};
};
这是一种叫做套用(部分函数应用)的技术。
你有一个函数game.onKeydown
,它有三个参数。你想要一个只有一个参数的函数,因为你现在知道了两个参数。值r
和c
在makeKeydown
内部被赋值,值e
在实际调用新函数makeKeydown
时被赋值。
上面的链接是John Resig关于curry的一篇文章(推荐)
r
和c
变量是在调用game.makeKeydown
时确定的。例如,var fn = game.makeKeydown(1, 2);
将返回一个函数,其r
和c
的值始终分别为1和2。
fn
也将接受一个值,该值将成为e
的值,因此fn("s")
将"s"
的值赋给e
。
顺便说一下,将值赋给r
和c
的机制称为"闭包"。
我很业余,但这是我对这一点的理解:当您将参数传递给函数时,该函数将用作为参数传递的值替换用于命名参数的变量的所有实例。这个函数所做的就是创建一个固定值为r和c的函数,以及一个额外的参数e,稍后你可以把它传递给你刚刚创建的这个新函数
简单地说,您拥有的代码是一个闭包。内部函数被构造并在调用外部函数时返回。因此,当外部函数makeKeydown
用参数r
和c
调用时,它们在内部函数构造时可用。
内部函数将只有一个参数,e
,可能是传递给事件处理程序的事件对象。因此,
game.makeKeyDown( 2, 4 )
将返回一个可以保存在var
中的函数。这个新函数将只使用如下一个参数调用:
var handler = game.makeKeydown(1,2);
var result = handler(4)
- 如何传递函数中的参数
- 如何在单击、Knockout时传递函数中的值
- D3选择html——传递函数时,索引从1开始,而不是从0开始
- 在谷歌地图的addListener事件中传递函数
- 如何在javascript中设置传递函数
- 什么's调用函数和传递函数的区别
- 在Angular Directive中传递函数作为参数不会;不起作用
- Skrollr:当滚动位置在最后一个关键帧之后时传递函数
- 在JS中传递函数作为参数,并访问接收函数's变量
- 如何在aspx页面中的转发器ItemDataBound中传递函数中的Control.ClientID
- setTimeout()/setInterval()赢得't执行**我正在传递函数对象,而不是执行函数
- WaveShaperNode的传递函数
- 在 .on('click') 事件处理程序中传递函数和函数参数
- 通过 x 标记访问器传递函数
- javascript:传递函数
- ES6类,传递函数作为参数来注册expressjs路由
- JavaScript:获取传递函数的参数
- 传递函数后不要更改对象
- 如何传递函数来比较项目
- 动态添加onclick到元素,传递函数参数