Saya tahu bahwa >=
operator berarti lebih dari atau sama dengan, tetapi saya sudah melihatnya=>
di beberapa kode sumber. Apa arti dari operator itu?
Berikut kodenya:
promiseTargetFile(fpParams, aSkipPrompt, relatedURI).then(aDialogAccepted => {
if (!aDialogAccepted)
return;
saveAsType = fpParams.saveAsType;
file = fpParams.file;
continueSave();
}).then(null, Components.utils.reportError);
javascript
syntax
ecmascript-6
arrow-functions
rpgs_player
sumber
sumber
Jawaban:
Apa itu
Ini adalah fungsi panah. Fungsi panah adalah sintaks pendek, yang diperkenalkan oleh ECMAscript 6, yang dapat digunakan mirip dengan cara Anda akan menggunakan ekspresi fungsi. Dengan kata lain, Anda sering dapat menggunakannya sebagai ganti ekspresi
function (foo) {...}
. Tetapi mereka memiliki beberapa perbedaan penting. Misalnya, mereka tidak mengikat nilai mereka sendirithis
(lihat di bawah untuk diskusi).Fungsi panah adalah bagian dari spesifikasi ECMAscript 6. Mereka belum didukung di semua browser, tetapi mereka sebagian atau sepenuhnya didukung di Node v. 4.0+ dan di sebagian besar browser modern yang digunakan pada 2018. (Saya sudah memasukkan sebagian daftar browser yang mendukung di bawah).
Anda dapat membaca lebih lanjut di dokumentasi Mozilla tentang fungsi panah .
Dari dokumentasi Mozilla:
Catatan tentang Bagaimana
this
Bekerja pada Fungsi PanahSalah satu fitur paling praktis dari fungsi panah terkubur dalam teks di atas:
Apa artinya ini secara sederhana adalah bahwa fungsi panah mempertahankan
this
nilai dari konteksnya dan tidak memiliki sendirithis
. Fungsi tradisional dapat mengikat nilainya sendirithis
, tergantung pada bagaimana ia didefinisikan dan dipanggil. Ini membutuhkan banyak senam sepertiself = this;
, dll., Untuk mengakses atau memanipulasithis
dari satu fungsi di dalam fungsi lainnya. Untuk info lebih lanjut tentang topik ini, lihat penjelasan dan contoh dalam dokumentasi Mozilla .Kode Contoh
Contoh (juga dari dokumen):
Catatan tentang Kompatibilitas
Anda dapat menggunakan fungsi panah di Node, tetapi dukungan browser tidak tepat.
Dukungan browser untuk fungsi ini telah sedikit meningkat, tetapi masih belum cukup luas untuk sebagian besar penggunaan berbasis browser. Pada 12 Desember 2017, didukung dalam versi saat ini:
Tidak didukung di:
Anda dapat menemukan lebih banyak informasi (dan lebih terkini) di CanIUse.com (tidak ada afiliasi).
sumber
Itu dikenal sebagai Fungsi Panah, bagian dari spesifikasi ECMAScript 2015 ...
Sintaks yang lebih pendek dari sebelumnya:
DEMO
Hal luar biasa lainnya adalah leksikal
this
... Biasanya, Anda akan melakukan sesuatu seperti:Tapi itu bisa ditulis ulang dengan panah seperti ini:
DEMO
MDN
Lebih lanjut tentang Sintaks
Untuk lebih lanjut, inilah jawaban yang cukup bagus untuk kapan menggunakan fungsi panah.
sumber
Ini akan menjadi "ekspresi fungsi panah" yang diperkenalkan dalam ECMAScript 6.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/arrow_functions
Untuk tujuan historis (jika halaman wiki berubah nanti), itu adalah:
sumber
Ini adalah Fungsi Panah
Juga dikenal sebagai Fat Arrow Functions . Mereka adalah cara yang bersih dan ringkas untuk menulis ekspresi fungsi, misalnya
function() {}
.Fungsi Panah dapat menghapus kebutuhan
function
,return
dan{}
saat mendefinisikan fungsi. Mereka adalah satu-liner, mirip dengan Ekspresi Lambda di Jawa atau Python.Contoh tanpa parameter
Jika beberapa pernyataan perlu dibuat dalam Fungsi Panah yang sama, Anda harus membungkus, dalam contoh ini,
queue[0]
dalam kurung kurley{}
. Dalam hal ini, pernyataan pengembalian tidak dapat dihilangkan.Contoh dengan 1 parameter
Anda bisa menghilangkan
{}
dari yang di atas.Ketika ada parameter tunggal, tanda kurung
()
sekitar parameter bisa dihilangkan.Contoh dengan beberapa parameter
Contoh yang bermanfaat
Jika kami ingin mendapatkan harga setiap buah dalam satu array, di ES5 kita bisa melakukan:
Dalam ES6 dengan Fungsi Panah baru, kita dapat membuat ini lebih ringkas:
Informasi tambahan tentang Fungsi Panah dapat ditemukan di sini .
Kompatibilitas Browser
Informasi tambahan terkini dapat ditemukan pada kompatibilitas browser di sini
sumber
hanya dengan menambahkan contoh lain dari apa yang bisa dilakukan lambda tanpa menggunakan peta:
sumber
Seperti yang dikatakan orang lain, ini adalah sintaks baru untuk membuat fungsi.
Namun, fungsi semacam ini berbeda dari yang normal:
Mereka mengikat
this
nilai. Seperti yang dijelaskan oleh spec ,Mereka bukan konstruktor.
Itu berarti mereka tidak memiliki [internal] metode internal, dan dengan demikian tidak dapat dipakai, misalnya
sumber
Saya sudah membaca, ini adalah simbol
Arrow Functions
diES6
ini
menggunakan
Arrow Function
dapat ditulis sebagaiMDN Documents
sumber
Menambahkan contoh CRUD sederhana dengan Arrowfunction
sumber
Tidak puas dengan jawaban yang lain. Jawaban suara teratas pada 2019/3/13 secara faktual salah.
Versi singkat dari
=>
artinya adalah pintasan yang menulis fungsi DAN untuk mengikatnya ke arusthis
Secara efektif merupakan jalan pintas untuk
Anda dapat melihat semua hal yang dipersingkat. Kami tidak butuh
function
, jugareturn
tidak.bind(this)
atau bahkan kawat gigi atau tanda kurungContoh fungsi panah yang sedikit lebih panjang mungkin
Menunjukkan bahwa jika kita ingin banyak argumen ke fungsi kita perlu tanda kurung dan jika kita ingin menulis lebih dari satu ekspresi kita perlu tanda kurung kurawal dan eksplisit
return
.Sangat penting untuk memahami
.bind
bagian itu dan ini adalah topik besar. Ini ada hubungannya dengan apathis
artinya dalam JavaScript.SEMUA fungsi memiliki parameter implisit yang disebut
this
. Bagaimanathis
diatur ketika memanggil suatu fungsi tergantung pada bagaimana fungsi itu dipanggil.Mengambil
Jika Anda memanggilnya dengan normal
this
akan menjadi objek global.Jika Anda dalam mode ketat
Itu akan terjadi
undefined
Anda dapat mengatur
this
secara langsung menggunakancall
atauapply
Anda juga dapat mengatur
this
secara implisit menggunakan operator titik.
Masalah muncul ketika Anda ingin menggunakan fungsi sebagai panggilan balik atau pendengar. Anda membuat kelas dan ingin menetapkan fungsi sebagai panggilan balik yang mengakses instance kelas.
Kode di atas tidak akan berfungsi karena ketika elemen menjalankan event dan memanggil fungsi,
this
nilainya tidak akan menjadi instance dari kelas.Salah satu cara umum untuk memecahkan masalah itu adalah menggunakan
.bind
Karena sintaks panah melakukan hal yang sama yang dapat kita tulis
bind
secara efektif membuat fungsi baru . Jikabind
tidak ada, pada dasarnya Anda bisa membuatnya sendiri seperti iniDalam JavaScript yang lebih lama tanpa operator spread
Memahami kode itu membutuhkan pemahaman tentang penutupan tetapi versi singkatnya
bind
membuat fungsi baru yang selalu memanggil fungsi asli denganthis
nilai yang terikat padanya. fungsi panah melakukan hal yang sama karena mereka adalah jalan pintas untukbind(this)
sumber
Seperti semua jawaban lain sudah katakan, itu bagian dari sintaks fungsi panah ES2015. Lebih khusus, itu bukan operator, itu punctuator tanda yang memisahkan parameter dari tubuh:
ArrowFunction : ArrowParameters => ConciseBody
. Misalnya(params) => { /* body */ }
.sumber
ES6
Fungsi panah:Dalam javascript
=>
adalah simbol ekspresi fungsi panah. Ekspresi fungsi panah tidak memilikithis
ikatan sendiri dan oleh karena itu tidak dapat digunakan sebagai fungsi konstruktor. sebagai contoh:Aturan menggunakan fungsi panah:
{}
danreturn
pernyataan ituSebagai contoh:
sumber
Fungsi panah yang dilambangkan dengan simbol (=>) membantu Anda membuat fungsi dan metode anonim. Itu mengarah ke sintaks yang lebih pendek. Misalnya, di bawah ini adalah fungsi "Tambah" sederhana yang mengembalikan penambahan dua angka.
Fungsi di atas menjadi lebih pendek dengan menggunakan sintaks "Panah" seperti yang ditunjukkan di bawah ini.
Kode di atas memiliki dua bagian seperti yang ditunjukkan pada diagram di atas: -
Input: - Bagian ini menentukan parameter input ke fungsi anonim.
Logika: - Bagian ini muncul setelah simbol “=>”. Bagian ini memiliki logika fungsi yang sebenarnya.
Banyak pengembang berpikir bahwa fungsi panah membuat sintaks Anda lebih pendek, lebih sederhana dan dengan demikian membuat kode Anda dapat dibaca.
Jika Anda percaya kalimat di atas, maka izinkan saya meyakinkan Anda bahwa itu adalah mitos. Jika Anda berpikir sejenak fungsi yang ditulis dengan nama jauh lebih mudah dibaca daripada fungsi samar yang dibuat dalam satu baris menggunakan simbol panah.
Lihat kode di bawah ini yang memiliki variabel global "konteks" yang ditentukan, variabel global ini diakses di dalam fungsi "SomeOtherMethod" yang dipanggil dari metode lain "SomeMethod".
"SomeMethod" ini memiliki variabel "konteks" lokal. Sekarang karena "SomeOtherMethod" dipanggil dari "" SomeMethod "kami mengharapkannya menampilkan" konteks lokal ", tetapi menampilkan" konteks global ".
Tetapi jika mengganti panggilan dengan menggunakan fungsi Panah itu akan menampilkan "konteks lokal".
Saya mendorong Anda untuk membaca tautan ini ( Fungsi panah dalam JavaScript ) yang menjelaskan semua skenario konteks javascript dan di mana skenario konteks penelepon tidak dihormati.
Anda juga dapat melihat demonstrasi fungsi Panah dengan javascript di video youtube ini yang secara praktis menunjukkan istilah Konteks.
sumber
Seperti yang telah dinyatakan orang lain, fungsi biasa (tradisional) digunakan
this
dari objek yang disebut fungsi, (misalnya tombol yang diklik) . Sebagai gantinya, fungsi panah menggunakanthis
dari objek yang mendefinisikan fungsi.Pertimbangkan dua fungsi yang hampir identik:
Cuplikan di bawah ini menunjukkan perbedaan mendasar antara apa yang
this
mewakili untuk setiap fungsi. Fungsi reguler menghasilkan[object HTMLButtonElement]
sedangkan fungsi panah menghasilkan[object Window]
.sumber