回答
这两个功能完全一样。唯一的区别是顶层功能需要一个参数,_
,而另一个参数为零。这个例子中没有关系,因为你不使用_
变量。
但是,如果您使用_
作为变量名,并且您在该函数中使用它,则会遇到问题。例如:
(_ => console.log(_))();
不是一回事
(() => console.log(_))();
在第一行中,函数打印参数_
,其中,在这种情况下是undefined
的值,因为没有值被传递到它。在第二行中,函数打印全局变量_
的值。如果您使用像underscore.js这样的库,其中使用变量_
,这可能会成为问题。
尽管两者在内部产生相同的输出,但它们是不同的,对吗? – James
A“脂肪箭头”(=>
)函数可以用单个标识符参数名被声明,或与零个或更多个参数的括号的列表。您的第一个示例
(_ => console.log(1))();
是第一种情况,参数名称为“_”。第二个例子是一个参数列表不带参数:
(() => console.log(1))();
既不功能使用其参数的,并且两个调用传递任何参数。也就是说,这两个函数调用都没有实际的参数;报表均以()
结尾。这两者是否“等同”取决于你对“等效”的定义。在这两种情况下,都会发生完全相同的事情。但是,匿名胖箭头功能并不完全相同。
不,它们不相同。第一个是具有1个参数的匿名胖箭头函数,第二个是具有0个参数的匿名胖箭头函数。因此,第一个依赖于将一个函数的参数传递太少并不是ECMAScript中的错误。
下划线_
有时用于指示满足某个合同所需的参数,但实际上被忽略。但是,在这种情况下,由于参数不是必需,因此这是该惯例的滥用:该函数不带参数被调用,因此不需要声明参数。
- 1. ValueInjecter是否具有这些automapper功能?
- 2. 这些功能是否支持?
- 3. 这些安全功能是否足够?
- 4. 这些功能在TensorFlow中是否相同?
- 5. 这些JS条件语句在功能上是否相同?
- 6. Javascript - 这些功能是否做同样的事情?
- 7. 这些SQL语句在功能上是否相同?
- 8. 这些功能在逻辑上是否相同?
- 9. 这些功能在Windows Phone 7中是否可能?
- 10. 这些功能的Sass和LESS中的等价物是什么?
- 11. Python,条件 - 这些是否相等?
- 12. 这些功能有什么不同?
- 13. 如何同时运行这些功能?
- 14. 这些真的不同的功能? jQuery.extend()
- 15. 这些片段是否等同? (NVL与例外)
- 16. 是否有可能这两个功能
- 17. 这是__import__功能是否正确? 。
- 18. 这些非功能性需求是否正确?
- 19. NHibernate与Firebird ...是否启用了这些功能?
- 20. 是否有MonetDB功能,等效于IF?
- 21. LevelDB是否支持热备份(或同等功能)?
- 22. SparkViewEngine:是否有可用的功能等同于PHP包含?
- 23. QT是否有与Microsoft Blend或Adobe工具等同的功能?
- 24. 这些jQuery表达式是否相同?
- 25. 这些JQuery调用是否相同?
- 26. 这些查询是否相同?
- 27. 这些cron表达式是否相同?
- 28. 这些SQL语句是否相同?
- 29. 这些对象是否相同?
- 30. 这些指针结构是否相同?
它们是等价的。两个打印“1”到控制台。 – Pointy
但是为什么使用_和()作为匿名函数,是一样的?为什么使用_? – James
为简洁起见,有时会这样写。它通常意味着“被忽略”。 – Ben