回答
這兩個功能完全一樣。唯一的區別是頂層功能需要一個參數,_
,而另一個參數爲零。這個例子中沒有關係,因爲你不使用_
變量。
但是,如果您使用_
作爲變量名,並且您在該函數中使用它,則會遇到問題。例如:
(_ => 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