回答
這兩個功能完全一樣。唯一的區別是頂層功能需要一個參數,_
,而另一個參數爲零。這個例子中沒有關係,因爲你不使用_
變量。
但是,如果您使用_
作爲變量名,並且您在該函數中使用它,則會遇到問題。例如:
(_ => console.log(_))();
不是一回事
(() => console.log(_))();
在第一行中,函數打印參數_
,其中,在這種情況下是undefined
的值,因爲沒有值被傳遞到它。在第二行中,函數打印全局變量_
的值。如果您使用像underscore.js這樣的庫,其中使用變量_
,這可能會成爲問題。
儘管兩者在內部產生相同的輸出,但它們是不同的,對嗎? – James
A「脂肪箭頭」(=>
)函數可以用單個標識符參數名被聲明,或與零個或更多個參數的括號的列表。您的第一個示例
(_ => console.log(1))();
是第一種情況,參數名稱爲「_」。第二個例子是一個參數列表不帶參數:
(() => console.log(1))();
既不功能使用其參數的,並且兩個調用傳遞任何參數。也就是說,這兩個函數調用都沒有實際的參數;報表均以()
結尾。這兩者是否「等同」取決於你對「等效」的定義。在這兩種情況下,都會發生完全相同的事情。但是,匿名胖箭頭功能並不完全相同。
不,它們不相同。第一個是具有1個參數的匿名胖箭頭函數,第二個是具有0個參數的匿名胖箭頭函數。因此,第一個依賴於將一個函數的參數傳遞太少並不是ECMAScript中的錯誤。
下劃線_
有時用於指示滿足某個合同所需的參數,但實際上被忽略。但是,在這種情況下,由於參數不是必需,因此這是該慣例的濫用:該函數不帶參數被調用,因此不需要聲明參數。
- 1. 這些安全功能是否足夠?
- 2. 這些JS條件語句在功能上是否相同?
- 3. 這些功能在TensorFlow中是否相同?
- 4. 這些功能的Sass和LESS中的等價物是什麼?
- 5. 這些功能在Windows Phone 7中是否可能?
- 6. Python,條件 - 這些是否相等?
- 7. 這些功能有什麼不同?
- 8. 這些真的不同的功能? jQuery.extend()
- 9. 是否有可能這兩個功能
- 10. 這是__import__功能是否正確? 。
- 11. sequelize for NodeJS:是否支持這些功能?
- 12. NHibernate與Firebird ...是否啓用了這些功能?
- 13. 這些非功能性需求是否正確?
- 14. SparkViewEngine:是否有可用的功能等同於PHP包含?
- 15. 這些JQuery調用是否相同?
- 16. 這些指針結構是否相同?
- 17. 這些SQL語句是否相同?
- 18. 這些SQL語句是否相同?
- 19. Git - 這些過程是否相同?
- 20. 這些查詢是否相同?
- 21. 這些jQuery表達式是否相同?
- 22. PHP:這些語句是否相同? (file_exists())
- 23. 這些對象是否相同?
- 24. 「排除這些詞」功能
- 25. 如何將這些功能
- 26. 這是否有意義 - 功能?
- 27. 這個功能是否有關閉?
- 28. 異步等待在功能上等同於任務延續是否爲真?
- 29. 這兩個正則表達式在功能上是否相同?
- 30. 這兩個vb方法在功能上是否相同?
它們是等價的。兩個打印「1」到控制檯。 – Pointy
但是爲什麼使用_和()作爲匿名函數,是一樣的?爲什麼使用_? – James
爲簡潔起見,有時會這樣寫。它通常意味着「被忽略」。 – Ben