我正在做我的第一次實習,它很好,我試圖跟上其他程序員談論的所有事情。有一天,一位高級程序員告訴我,Ruby將代碼塊直接傳遞給函數的能力比使用JavaScript中的匿名函數要好得多。這是我的理解,JS匿名函數是完全相同的事情 - 簡單地通過一個變量作爲參數傳遞一個代碼塊。代碼塊參數的實際例子優於匿名函數嗎?或者,這僅僅是一種語言優先於另一種語言的問題,代碼可讀性/可重用性問題,還是我只是誤解了其他一些基本概念?這是一個關於哪種語言用於某些任務的相對優點的傳遞對話,而不是一個具體的工作問題,這也許是爲什麼我很困惑。我搜索了幾個天真的代碼塊的例子,並且在JS中實現它們時幾乎沒有麻煩。期待對此事的任何意見(匿名或其他)。Ruby代碼塊與JavaScript匿名函數的區別
回答
他們不完全一樣。主要原因是使用隱式和顯式返回值。
您可以在這裏讀到一篇好文章:http://yehudakatz.com/2012/01/10/javascript-needs-blocks/
這真是太棒了! 「這種印象在我作爲一名Ruby/JavaScript開發人員早期我曾經承認過,它忽略了一個非常重要的微妙結果,這個微妙的結果通常被稱爲」Tennent的對應原則「。簡而言之,Tennent的對應原則說: 「對於給定的表達式expr,lambda expr應該是等效的。」「謝謝! – ialexander
歡迎您! – phoet
@wormtown它也將很高興接受答案:) – phoet
- 1. Javascript:用匿名函數包裝代碼
- 2. 匿名代碼塊
- 3. 這兩種調用JavaScript匿名函數有什麼區別?
- 4. javascript匿名函數
- 5. JavaScript匿名函數
- 6. 傾銷的源代碼匿名函數
- 7. jQuery的代理與匿名函數
- 8. Objective-C塊與JavaScript中的匿名函數類似嗎?
- 9. 與匿名函數
- 10. 與匿名函數
- 11. 的Javascript:匿名函數
- 12. removeEventListener匿名函數的javaScript
- 13. 的JavaScript匿名函數
- 14. JavaScript中的匿名函數
- 15. PHP將代碼注入匿名函數
- 16. 以匿名函數訪問此代碼
- 17. 包裝成匿名函數的JavaScript代碼不工作
- 18. 匿名與非匿名函數Lua
- 19. Java中的匿名代碼塊
- 20. javascript onclick,匿名函數
- 21. JavaScript匿名函數語法
- 22. javascript匿名函數語法
- 23. Javascript匿名函數同步
- 24. Javascript防止匿名函數?
- 25. Javascript匿名函數問題
- 26. JavaScript錯誤匿名函數
- 27. javascript匿名setTimeout函數
- 28. 插入JavaScript代碼放到匿名函數範圍
- 29. Javascript與jQuery函數的區別?
- 30. 兩個不同的匿名函數聲明之間的區別?
你要找的東西是可重複使用的。但是,您將使用這段代碼完全取決於程序員或在工作組/開發團隊中應用的規則。本質上兩者的目標都是相同的結果。 Lambda(匿名)函數只是使用快速和簡短函數回調的一個選項。在JavaScript中,它們似乎經常用於更大的代碼塊。只要你知道你只會在調用中使用這個小函數*,你可能會對lambda表達式賦予函數它自己的空間(可重用)。 – 2013-12-22 20:13:45
至於Ruby,你的意思是這樣的:'def meth1;產量,如果block_given ?;結束; meth1 {puts 42}'? –
@DarekNędza是的。具體來說,該類型的代碼塊不是lambda或某些這樣的。 – ialexander