为什么我的子函数需要“return”语句以避免出错?父函数没有“返回”,也没有错误
Why does my child function require a 'return' statement to avoid erroring out? The parent function has no 'return' and no error
var a = function(param1) {
var b = function(param2) {
console.log(param1 + param2);
};
return b;
};
a(4)(5); // this logs "9"
返回语句(在本例中为"返回 b")是否始终是必需的?为什么我们在这里需要一个函数,而不是另一个函数?什么时候有必要,为什么?
表达式
a(4)(5)
首先使用参数 4
(a(4)
) 调用函数a
,返回 b
(这是一个函数)。然后使用参数 5
调用此返回的函数。它和你做的一样
c = a(4);
c(5);
因此,您需要外部函数a
来返回函数 - 因为您将它的结果视为函数。而且你不在乎内部函数是否b
返回任何内容,因为你不使用结果,所以它是否返回任何东西并不重要。
最后一行a(4)(5);
调用a
作为函数(输入为 4
),然后立即调用a
的结果作为函数(输入为 5
)。 就像你现在一样,a
返回一个函数b
,所以工作得很好。
如果不尝试,我会猜测注释掉最后一条return
语句会导致"未定义不是函数错误"或类似错误。在没有 return
语句的情况下,函数的结果是 undefined
。因此,尝试将a
的结果作为函数调用失败。
返回语句(在本例中为"返回 b")是否始终是必需的?
返回语句并不总是必需的。但是,在本例中,表达式:
a(4)(5)
要求a(4)
返回一个可以用 (5)
调用的函数。考虑:
var x = a(4);
x(5);
为什么我们在这里需要一个函数,而不是另一个函数?
默认情况下,函数返回未定义的值。如果希望函数返回其他值,则必须使用 return 语句。在这种情况下,a
需要返回一个函数,它需要一个 return 语句来执行此操作。
请注意,b
还具有 param1 的闭包,以便表达式param1 + param2
按预期工作。
什么时候有必要,为什么?
每当您希望函数返回未定义以外的某些值时,这是必要的。
相关文章:
- Jquery函数在错误的时间提交
- 函数产生错误的差异
- Wordpress中的Javascript出现匿名函数/引用错误
- 回复'js'仅当请求有错误时(否则使用html)
- 缓存!saveLocations()和addLocation()函数有什么区别
- jQuery结合了2个绑定函数(类型错误:a是未定义的)
- 为什么prototypjs观察到回调函数有绑定
- 如何使用图表包装函数有条件地格式化谷歌可视化表单元格
- Google可视化addListener调用函数引用错误
- 函数返回错误'令牌{'
- 在Javascript中调用对象方法时不是函数类型错误
- 得到“;undefined不是函数“;错误
- 表单已发送,但验证有错误
- 重载像$(document).ready这样的函数是错误的
- 如果文件不存在,fs.watch是否有错误处理程序
- "未定义不是函数“;错误jQuery,.replaces,scrollTop
- 一个脚本中有多个自调用函数的错误:分号的大小写
- Javascript数组函数有我看不到的错误
- 如果在另一个函数中有错误,为什么javascript不运行一个函数?
- 有错误处理的外部扭曲函数