为什么不编写匿名函数内容而不是匿名函数和匿名函数内容?
答案 0 :(得分:7)
因为您没有编写匿名函数,所以请立即调用它。它通常传递给其他一些用它做事的函数(例如使用匿名函数将数组映射到另一个数组)。
答案 1 :(得分:2)
它们通常用于回调。您不能只编写内容,因为您的代码不会直接执行它。
答案 2 :(得分:1)
可能最大的用途是一次性功能,不会在其他任何地方使用,也不需要动态地按需创建。这样,他们就不需要“污染”命名空间。
例如,在python中:
x_values = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y_values = map(lambda x: x**x + 2x + 3, x_values)
通过使用lambda,我不需要在模块名称空间中为一个多项式(x ^ 2 + 2x + 3)创建一个函数。
有许多方面它们派上用场,特别是在函数式编程中(例如查找闭包或currying)。
答案 3 :(得分:0)
它就是为了让你不必创建一个基本上没用的函数包装器。
答案 4 :(得分:0)
它们的存在是因为很多时候你想要使用表达式语法来获得方法语义。
var l = new List<int>() { 1, 2, 3, 4, 5 };
var a = l.Where( i => i > 3 ); // a = 4, 5
我不想打扰一个检查整数是否大于3的新方法谓词。我想要一个方法的含义,我只能放一个表达式。匿名函数让我有两个。活泉! :)
答案 5 :(得分:0)
如果你问“为什么要使用lambda表达式?”,那么有几个答案。例如,lambda表达式(简写)通常比完全匿名函数(即使用delegate()术语)或完整的函数和委托更加冗长的替代方法更易于阅读和理解。 Lambda表达式也非常适合执行简短,“简单”的计算(即对一组输入的简单数学),这在软件编程中非常频繁。
Lambda表达式是一个功能强大的工具,可以帮助提高代码的表现力,简单性和可读性。
答案 6 :(得分:0)
我不知道这是否适用,因为它特定于Javascript并且我没有看到Javascript标记,但是......创建+同时调用匿名函数并不罕见。这通常是为了保护可变污染的全球范围。
var x = 1;
(function(){
var x = 2;
})();
x == 1;