gpt4 book ai didi

javascript - 需要解释函数表达式如何作为函数声明中的参数传递

转载 作者:行者123 更新时间:2023-11-29 10:37:54 25 4
gpt4 key购买 nike

将函数表达式作为参数传递

例子:

var greeting = function(first,last) {
return "Hello " + first + last;
};
function greet(frst,lst,word) {
var result = word(frst,lst);
console.log(result);
}
greet("Joe","Bob",greeting);

我知道 var greeting 被分配了一个匿名函数,这个函数作为一个表达式被传递。

我理解在全局执行上下文中,变量 greeting 被预留了一些内存空间,而不是它里面的函数。

我知道函数 greet 是留出内存空间的,当我们调用函数 greet 时,它会为局部变量 result 创建内存空间。现在变量 result 被分配给 word(frst,lst) 这是否使它成为一个函数?意思是 word(frst,lst) 是一个函数表达式?

我不明白的是...

当我们使用以下函数调用函数时:

greet("Joe","Bob",greeting);

浏览器能够接受参数“Joe”和“Bob”并将它们放入word(frst,lst),然后使用参数 greeting,这是一个运行函数的变量添加它的两个参数,当变量和函数 greet 的参数具有不同的名称时?我不明白如何将参数传递给它以给我们 "Hello Joebob" 的结果。

如果我的任何陈述有误,请纠正我,非常感谢您的帮助。

请帮忙!!

谢谢!

最佳答案

好吧,让我们一一来吧。

<强>1。在 JS 中作为一流对象的功能

在 JS 中,函数被视为第一类对象,这意味着您可以像处理其他对象或变量一样存储、传递它作为参数、接收函数参数。

在您的例子中,匿名函数被分配给变量 greeting。此函数/函数引用可以作为普通变量传递给任何其他函数。

当你将任何函数传递给另一个函数时,它是通过引用传递的,为了执行它,你必须用一对括号 greeting(..) 调用它。

<强>2。在函数引用中传递参数

JS 函数在调用时不执行类型检查或传递给函数的参数数量。传递的参数在函数定义中作为参数接收时保持相同的顺序。例如 -function dummy(x, y, x){} 如果作为 dummy(1,2,3) 调用,将接收 x 作为 1, y2 等等。如果某些参数没有传递,比如dummy(1, 3),相应的参数会被JS自己设置为undefined。这些都是由 JS 引擎隐式完成的。

JS函数参数对象

JavaScript 函数有一个称为参数对象的内置对象。参数对象包含函数被调用(调用)时使用的参数数组。每次调用函数时,都会使用传递的参数设置此对象,并且可以在函数内检索。例如。

x = findMax(1, 123, 500, 115, 44, 88);

function findMax() {
var i;
var max = -Infinity;
for (i = 0; i < arguments.length; i++) {
if (arguments[i] > max) {
max = arguments[i];
}
}
return max;
}

在上面的例子中,因为 findMax 的参数是动态的,即。我们不确定它将调用多少个数字,最好从 arguments 对象而不是直接函数参数中检索参数。

好读 - http://bonsaiden.github.io/JavaScript-Garden/#function http://bonsaiden.github.io/JavaScript-Garden/#function.arguments

关于javascript - 需要解释函数表达式如何作为函数声明中的参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33887302/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com