传递多个参数的闭包函数
closure function passing multiple arguments
我试图理解Javascript中的闭包。。我创建了一个函数并传递了2个值(a,b)。。我想知道内函数平方(x)是如何取a的值并在返回平方(a)+平方(b)之前返回其平方的。。
在案例2中,我做了类似的传递(x,y),但这不起作用。。
你能解释一下吗?
案例1
<html>
<head>
<script>
function addsquares(a,b){
function square(x){
return x * x;
}
return square(a) + square(b)
}
document.write(addsquares(2,3))
</script>
<head>
<body>
<body>
</html>
案例-2
<html>
<head>
<script>
function addsquares(a,b){
function square(x,y){
return x * y;
}
return square(a) + square(b)
}
document.write(addsquares(2,3))
</script>
<head>
<body>
<body>
</html>
所提供的代码中没有涉及闭包。内部函数立即执行,并从外部函数参数中传递适当的值。返回的是调用内部函数(两次,相加在一起)的结果,而不是闭包/函数对象!
否则,闭包的参数——这里是秘密:闭包只是在特定绑定上下文中创建的函数对象——就像普通函数一样。下面是一个实际上创建闭包的示例:
function multiply_over_sum(a){
function sum(x, y) {
return a * (x + y);
}
// NOW we create a closure - as a FUNCTION-OBJECT (sum)
// is returned to the caller while maintaining access to the
// current binding context.
return sum;
}
// Then multiply_by5_over_sum is now a FUNCTION-OBJECT
// that has "a" bound to the value 5.
// (It is a closure specifically because it binds to a variable.)
var multiply_by5_over_sum = multiply_over_sum(5);
// This FUNCTION-OBJECT (closure) can be INVOKED like any function
// to yield a value. In this case the values 4 and 3 are passed as
// the arguments for "x" and "y", respectively
var sum = multiply_by5_over_sum(4, 3);
虽然这不是严格正确的(因为闭包绑定到JavaScript中的变量,而不是值),但上面给出的例子中的闭包可以看作以下函数:
var multiply_by5_over_sum = function (x, y) {
return 5 * (x + y);
};
也就是说,只捕获了闭包中绑定的变量("a")。参数"x"answers"y"只是闭包/函数的参数,并且只有在调用闭包时才会绑定到值,就像multiply_by5_over_sum(4, 3)
所做的那样。
相关文章:
- 使用闭包/函数绑定将自函数作为回调传递
- 了解 JavaScript 闭包函数
- 传递多个参数的闭包函数
- 将“(0)”附加到此闭包函数的目的是什么
- 如何复制(新实例)闭包函数
- Javascript 闭包函数参数
- 具有闭包函数作用域的意外行为
- javascript闭包函数可以由用户更改吗
- Javascript:是这个闭包函数
- 为什么闭包函数中的 javascript 变量在多次调用时不会重置为默认值
- Js闭包:函数在第二次调用时失败
- 如何存储闭包函数返回的变量
- javascript闭包函数的用法
- JavaScript闭包函数传递给事件监听器
- 闭包函数问题
- & # 39;这个# 39;匿名闭包函数内部
- 在JavaScript中实现自动记忆(返回闭包函数)
- 不理解闭包函数是如何工作的
- Javascript闭包函数
- 为javascript闭包函数编写jasmine测试规范