Saya menggunakan pustaka pihak ketiga yang memiliki fungsi yang mengambil fungsi sebagai argumen. Saya melakukan beberapa pemeriksaan bersyarat untuk memutuskan apakah akan menambahkan fungsi tertentu sebagai parameter atau tidak dan dalam beberapa kasus saya tidak ingin menyediakan fungsi. Memberikan null dalam kasus tersebut akan memunculkan error.
Saya menemukan kode ini yang berfungsi, tetapi saya tidak sepenuhnya memahami apa yang terjadi.
compose(__DEV__ ? devTools() : f => f)
Apakah f => f
setara dengan () => {}
fungsi anonim kosong?
javascript
lambda
ecmascript-6
SomethingOn
sumber
sumber
f
, menurut MDNJawaban:
f => f
mirip * denganfunction(f){ return f; }
Sangat dekat, tapi tidak seperti yang Anda harapkan.
* - seperti yang telah ditunjukkan dalam komentar, ada perbedaan kecil, tetapi demi pertanyaan Anda, menurut saya perbedaan tersebut tidak terlalu relevan. Mereka sangat relevan dalam situasi lain.
sumber
f => f
danfunction(f) { return f; }
:)new (f => f)
lemparan, itu berbedatoString
dan untuk beberapa alasan saya tidak bisa(f => f).arguments
melempar di Chrome tetapi tidak FF atau Edge.this
juga beda. (meskipun perbedaannya mungkin tidak dapat diamati jikathis
tidak muncul di badan fungsi ... Saya tidak yakin)f => f
adalah fungsi identitas . Ini hanya mengembalikan argumen yang diteruskan.Fungsi ini sering digunakan sebagai nilai default untuk proses transformasi, karena tidak melakukan transformasi apa pun.
Tidak. Fungsi kosong tidak mengembalikan apapun. Fungsi identitas mengembalikan argumen yang diteruskan.
sumber
Jika Anda ingin mengetahui
f => f
artinya, sisi kiri adalah parameter dan sisi kanan adalah nilai kembali. Jadi misalnya,f => f*2
setara dengan:Kode yang Anda gambarkan mengembalikan apa pun yang diberikan padanya sebagai input.
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions
sumber
Orang lain telah menyebutkan apa yang dimaksud
f => f
, jadi saya tidak akan membahasnya lebih dalam. Saya hanya akan menjelaskan fungsi lainnya, karena ada sedikit perbedaan antaraf => f
dan__DEV__ ? devTools() : f => f
Operator terner memeriksa apakah
__DEV__
nilai yang benar, dan jika demikian, itu mengembalikan fungsidevTools()
. jika tidak, ia mengembalikan fungsi identitasf => f
yang tidak melakukan apa-apa. Dengan kata lain: kode ini mengaktifkan beberapa fungsi mode pengembangan. Tanpa kode yang tersisa, sulit untuk mengetahui apa yang ditambahkan mode ini, tetapi mungkin, ini akan mengaktifkan beberapa informasi logging tambahan dan lebih sedikit kebingungan.sumber
__DEV__ ? devTools() : f => f
tidak menugaskan apapunf
. Apakah Anda melewatkan sesuatu dari contoh kode?Kapan pun dengan dilema serupa, Anda dapat menggunakan Babel untuk mendapatkan jawabannya.
Ini kembali seperti ini:
BTW, => yang Anda gunakan adalah fitur ES6 yang disebut ekspresi panah . Ekspresi minat lainnya
akan diubah menjadi:
Karena ekspresi fungsi panah selalu anonim , masuk akal jika Anda menambahkan nama ke fungsi:
akan dikonversi menjadi
sumber