function a() { return 1; }
function b() { return(1); }
Saya menguji kode di atas di konsol Chrome, dan keduanya kembali 1
.
function c() { return "1"; }
function d() { return("1"); }
Saya juga menguji kode di atas, dan kedua fungsi dikembalikan "1"
.
Jadi apa perbedaan antara menggunakan return
dan return()
?
javascript
chris97ong.dll
sumber
sumber
void(x)
,typeof(x)
void(0)
karena itu seharusnya singkatan dari undefined . Jadi jika itu singkat, mengapa menyertakan karakter yang tidak perlu? ;-)void i = 1; // ReferenceError
vsvoid (i = 1); // undefined
Jawaban:
Sama seperti di antara
dan
Artinya, tidak ada. Tanda kurung diperbolehkan karena diperbolehkan dalam ekspresi apa pun untuk memengaruhi urutan evaluasi, tetapi dalam contoh Anda, tanda kurung itu berlebihan.
return
bukanlah sebuah fungsi, tapi sebuah pernyataan . Ini secara sintaksis mirip dengan pernyataan aliran kontrol sederhana lainnya sepertibreak
dancontinue
yang juga tidak menggunakan tanda kurung.sumber
return
sebuah fungsi, bagaimana Anda mengembalikan nilai darinya?Tidak ada perbedaan.
return
bukanlah pemanggilan fungsi, tetapi merupakan pernyataan bahasa. Yang Anda lakukan dengan tanda kurung hanyalah mengelompokkan nilai kembalian Anda sehingga dapat dievaluasi. Misalnya, Anda bisa menulis:Dalam kasus ini, Anda mengembalikan nilai pernyataan
x == 0
, yang akan mengembalikan booleantrue
ataufalse
bergantung pada nilaix
.sumber
Sebenarnya di sini didahulukan
()
lebih tinggi jadi dievaluasi dulu:Di sini terlebih dahulu
("1")
dievaluasi, dengan cara berikut:jadi pernyataan di atas sama dengan:
Lihat secara visual:
Jadi pada dasarnya tidak ada perbedaan dalam fungsionalitas tetapi yang kedua mungkin agak lambat karena pertama-tama menyelesaikan tanda kurung.
sumber
Sama sekali tidak ada perbedaan. Jika Anda akan melihat spesifikasi pernyataan pengembalian JS (ECMAScript) . Di antara banyak hal lainnya, ini memberi tahu Anda:
yang dapat Anda berikan ekspresi
return
. Ekspresihello
,Math.abs(x)
,yourCustomFunc(7)
, atau dalam kasus kedua Anda ini bisa1
atau(1)
. Ekspresi1
setelah evaluasi adalah sama(1)
dan sama(((((1))))))
atau bahkan sebagai sesuatu yang sangat aneh(+(!(+(!1))))
.sumber
Tidak ada perbedaan, tanda kurung bersifat opsional. Lihat MSDN :
sumber
return
pernyataan. : P MS mungkin bosan menjawab pertanyaan dari noobs JS.()
, bukan bagian dari pernyataan return.return (expression
danreturn expression)
legal.return ()
,return (
danreturn )
: Preturn
adalahpernyataankata kunci yang memulai pernyataan kembali , bukan fungsi.Seperti yang telah disebutkan, tanda kurung tambahan memengaruhi urutan evaluasi, tetapi tidak digunakan untuk "menjalankan" fungsi yang dinamai
return
. Itulah mengapa garis-garis ini berfungsi tanpa masalah:Sebenarnya, mereka identik dengan baris-baris berikut:
Alasan
return()
melontarkan kesalahan sintaks adalah untuk alasan yang tepat baris berikut menampilkan kesalahan (pernyataan pengembalian disertakan untuk perbandingan):sumber
return
tidak menyertakan apapun setelahnya, itu mengasumsikan Anda ingin kembaliundefined
.return
dengan sendirinya adalah pernyataan kembali.Ada perbedaan besar bagi manusia, dan tidak ada perbedaan untuk mesin Javascript.
return 1
adalah pernyataan yang menyatakan bahwa kita harus segera keluar dari fungsi yang menghasilkan nilai 1.return(1)
adalah pernyataan yang sama yang disamarkan sebagai pemanggilan fungsi oleh konvensi idiot bahwa Anda tidak diwajibkan untuk memasukkan spasi di luar tanda kurung dalam Javascript. Jika Anda akan menggunakan kode seperti ini dalam sistem produksi, pengelola mana pun akan datang ke kantor Anda dengan pancang dan obor, setelah menghabiskan beberapa waktu mencoba memutuskan apakah Anda benar-benarreturn()
berfungsi di suatu tempat di basis kode atau hanya tidak tahu apareturn
kata kunci itu.Seperti yang telah dikatakan banyak orang dengan benar, tanda kurung tidak melakukan apa pun kecuali "kelompok" dengan memprioritaskan literal untuk nomor tersebut
1
.sumber
return
fungsi. "konvensi bodoh bahwa Anda tidak diwajibkan untuk memasukkan spasi di luar tanda kurung di Javascript" - hampir tidak ada bahasa yang mengharuskan itu; menyebut ini idiot itu bodoh. "pengelola mana pun akan datang ke kantor Anda dengan membawa tiang dan obor" - tidak ada yang berkompeten.return(1)
adalah praktik yang buruk tetapi orang-orang yang marah karena hal-hal seperti itu membuang-buang sumber daya dan menciptakan suasana yang buruk.return
fungsi" - fakta bahwa juru bahasa akan melarang Anda mendaftarkan fungsi dengan namareturn
tidak akan membantu pembaca kode untuk tidak mempertanyakan kewarasannya terlebih dahulu, jadi, kode ini sia-sia.return(1)
bukan hanya "latihan yang buruk", itu adalah tanda berbahaya dari seseorang yang tidak tahu apa yang dia lakukan!return
memiliki (dalam semua bahasa yang saya tahu yang memiliki kata kunci ini) memiliki prioritas paling rendah. Jadi, jika ekspresi opsional ada, itu selalu dievaluasi terlebih dahulu.Dalam pernyataan return, tanda kurung di sekitar ekspresi sudah ada di dalamnya.
Dalam JavaScript, seperti dalam banyak bahasa lain (seperti C, C ++, Java, Python), pernyataan return memiliki dua bagian: kata kunci
return
dan ekspresi (opsional). Jadi dalam kasus apa pun, semua yang mengikutireturn
kata kunci dievaluasi pertama kali sebagai ekspresi , setelah itu, pernyataan return "dieksekusi" dengan meneruskan kontrol kembali ke pemanggil.Menggunakan atau tidak menggunakan tanda kurung adalah masalah gaya , sedangkan kebanyakan panduan gaya melarangnya untuk kasus-kasus sepele seperti yang dikutip dalam pertanyaan Anda, karena itu membuat pengembalian terlihat salah seperti fungsi.
Adendum kemudian
Jika dengan tanda kurung atau tanpa, jangan pernah lupa untuk menempatkan ekspresi opsional di belakang
return
, yaitu di baris yang sama. Kesalahan sebenarnya denganreturn
JavaScript terletak pada penambahan jeda baris setelahnya:... karena
test
fungsi di atas akan kembaliundefined
.sumber
dengan menambahkan tanda kurung, kami telah memastikan bahwa javascript tidak memasukkan titik koma sebelum beberapa pernyataan ditulis setelah dikembalikan, untuk referensi: - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar #Automatic_semicolon_insertion
contoh :
return a + b;
diubah menjadi
return; a + b;
oleh ASI.
Konsol akan memperingatkan "kode tidak dapat dijangkau setelah pernyataan kembali". Untuk menghindari masalah ini (untuk mencegah ASI), Anda dapat menggunakan tanda kurung:
return ( a + b );
kode disalin dari: - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/return
sumber