Saya yakin ini membuka sekaleng cacing tetapi [panduan gaya] tampaknya sedikit ketinggalan zaman dan saya ingin menyarankan 2 perubahan
const
dan let
var
?Saya tidak tahu mengapa var
lebih disukai (diberitahu untuk mengubah ke var dalam PR baru-baru ini). Dugaan saya adalah karena di situlah awalnya dan karena const
dan let
adalah baru. Tapi sekarang basis kode menggunakan modul ES5 sepertinya alasan untuk mempertahankan var
sudah lama hilang. Karena baris import
, agar kode berfungsi pada browser yang hanya mendukung var
kode harus dijalankan melalui transpiler. Transpiler yang sama sudah/akan mengonversi const
dan let
menjadi var
.
Selanjutnya, ada tujuan positif yang konkret untuk menggunakan const
dan let
lebih dari var
. Keduanya dicakupkan ke kurung kurawal alih-alih ruang lingkup fungsi. Tidak membuat variabel global tidak seperti var
. Tentu, sebagian besar kode menggunakan var
sekarang (walaupun IIRC eslint dapat memperbaikinya secara otomatis). Mengubah linter menjadi memerlukan const
dan let
dan perlahan mengubah kode lama akan mencegah lebih banyak kesalahan dan kebocoran. Juga dengan const
dan let
digunakan di mana saja, memungkinkan eslint memeriksa lebih banyak variabel tidak terdefinisi yang setidaknya bagi saya sebagai bantuan besar.
Ada suatu masa ketika var
lebih cepat tetapi waktu itu sudah lama berlalu.
Apakah sudah waktunya untuk berhenti menggunakan var
?
Ini mungkin preferensi pribadi oleh Mr. Doob tapi tebakan saya lebih dari yang tersisa dari hari-hari IE. IE tidak mendukung tanda koma tetapi sekarang transpiling terjadi, tanda koma dihapus oleh transpiler untuk kompatibilitas IE. Untuk devs trailing koma adalah kemenangan karena menghasilkan lebih sedikit kesalahan. Kesalahan yang biasanya tertangkap tetapi kesalahan yang sering membutuhkan setidaknya satu iterasi untuk ditangkap, berjalan di browser dan melihat kesalahan sintaks kemudian kembali dan mengedit koma. Setidaknya dalam pengalaman saya trailing koma menghindari masalah itu.
Dengan membuntuti koma dalam array dan objek multiline yang saya maksud misalnya
const sizes = [
100,
200,
300,
];
dan
const options = {
width: 100,
height: 200,
depth: 300,
};
Dengan koma tambahan, menambahkan atau menghapus baris hanya membutuhkan satu baris. Dengan tanda koma itu berarti selalu harus menyadari koma terakhir dan menghapusnya atau menambahkannya.
Tentu saja apa pun yang diputuskan baik-baik saja, saya akan mengikuti panduan untuk PR. Saya hanya berpikir saya akan bertanya ketika kode beralih ke modul ES5 jika sudah waktunya untuk mengunjungi kembali beberapa panduan gaya (perhatikan bagian var
sebenarnya tidak ada dalam panduan gaya.)
Ada saat ketika var lebih cepat tetapi waktu itu sudah lama berlalu.
Apa yang Anda mendasarkan ini? IIRC terakhir kali kami menguji ini, tidak ada perbedaan untuk const
tetapi let
agak lebih lambat. Akan lebih baik untuk melihat beberapa tes yang diperbarui tentang ini.
izinkan tanda koma dalam array dan objek multiline
Pasti setuju dengan perubahan ini, jika tidak ada masalah dengan IE (kami masih ingin mendukung setidaknya IE 10 dan 11 kan?).
Ada saat ketika var lebih cepat tetapi waktu itu sudah lama berlalu.
Apa yang Anda mendasarkan ini? IIRC terakhir kali kami menguji ini, tidak ada perbedaan untuk
const
tetapilet
agak lebih lambat. Akan lebih baik untuk melihat beberapa tes yang diperbarui tentang ini.
Ya, beberapa angka akan membantu keputusan ini.
izinkan tanda koma dalam array dan objek multiline
Dengan membuntuti koma dalam array dan objek multiline yang saya maksud misalnya
const sizes = [ 100, 200, 300, ];
Otak saya membacanya seperti ini:
const sizes = [
100,
200,
300, undefined
];
Penerjemah JS menghapus koma itu hari ini?
Saya pribadi tidak memilih untuk mengizinkan tanda koma dalam array multiline karena saya merasa tidak biasa untuk membaca juga.
Bagi saya, tujuan membubuhkan koma adalah untuk mempercepat penambahan dan penghapusan, serta menyusun ulang dengan memotong/menempel. Tidak perlu khawatir jika Anda hanya memotong item terakhir atau tidak, setiap baris adalah sama. Untuk melihat undefined
, mudah untuk menghindarinya jika Anda tahu hanya ada satu item per baris - dan dalam kasus di mana array berada pada satu baris seperti [1, 2, 3, 4, 5]
Anda tidak akan menambahkan tanda koma.
Di sisi lain, saya pikir itu tidak penting. Beralih ke const
/ let
adalah masalah penting di sini.
... tapi sekarang transpiling sedang terjadi ...
Kami tidak berubah, kan? Rollup hanya menggantikan sintaks impor/ekspor ES6 sambil membiarkan yang lainnya, kecuali jika Anda menambahkan plugin seperti rollup-plugin-buble . Tetapi let
/ const
tetap didukung di IE11.
Tanda koma juga memiliki tujuan yang jauh lebih besar daripada sekadar "kemudahan penggunaan". Dalam proyek yang lebih besar di mana banyak orang berkontribusi, akan berguna untuk menggunakan hal-hal seperti git blame
untuk mencari tahu siapa yang bertanggung jawab atas bagian kode apa.
Jadi, nyatakan yang sudah jelas di sini: Jika ada hal-hal yang terdaftar di beberapa baris yang ditambahkan oleh @mrdoob , dan nanti saya akan menambahkan baris di sana, nama saya akan ditampilkan pada baris kode terakhir yang tidak saya tulis.
Saya pribadi menentang penggunaan tanda koma untuk alasan yang sama persis seperti yang dikatakan orang-orang sebelum saya, tetapi saya melihat manfaatnya dan saya mulai terbiasa sekarang karena kami juga menerapkan ini di kantor sejak tahun ini.
Penerjemah JS menghapus koma itu hari ini?
Ya.
Mengenai penggunaan let
vs var
:
Perbedaan antara let
dan var
tidak masalah lagi hari ini jika menyangkut kinerja. V8 dan Spidermonkey (Firefox) memiliki pengoptimalan hebat akhir-akhir ini yang bekerja dengan sangat baik.
Lihat posting ini untuk elaborasi (pastikan untuk menjalankan cuplikan aktual untuk melihat bahwa perbedaannya cukup dapat diabaikan sekarang): https://stackoverflow.com/questions/37792934/why-is-let-slower-than-var- dalam-a-untuk-loop-in-nodejs
Jawaban yang diterima dari pertanyaan SO itu juga menunjukkan perbedaan antara var
dan let
dari perspektif fungsional, karena keduanya memiliki _ sangat_ arti dan kasus penggunaan yang berbeda jika tidak jelas kepada siapa pun.
Penggunaan const
untuk variabel yang tidak pernah berubah adalah hal yang mudah. Jika mesin javascript dapat melihat bahwa suatu variabel dideklarasikan dengan const
, ia mengetahui bahwa nilainya tidak akan pernah berubah lagi, sehingga dapat dioptimalkan secara besar-besaran.
Hanya 2 sen saya.
Sebagai referensi:
Tanda koma adalah salah satu pola js terbaik yang pernah saya lihat dan membuat perbedaan jauh lebih mudah dibaca.
Penerjemah JS menghapus koma itu hari ini?
Semua browser baik-baik saja dengan koma itu dalam array dan objek selama> 10 tahun kecuali IE
Biarkan saya menambahkan daripada melihatnya sebagai hal yang aneh POV lain adalah bahwa sintaks sebenarnya koma diperlukan itu hanya browser memberi Anda istirahat dan tidak memerlukan yang terakhir. Keanehan seseorang adalah kecantikan orang lain. Saya menemukan konsistensi setiap baris yang sama lebih menyenangkan secara pribadi daripada baris terakhir yang berbeda. Tentu saja itu adalah preferensi pribadi, saya hanya membahasnya dengan cara lain untuk melihat sesuatu.
untuk perbedaan saya menemukan perbandingan ini secara online
tidak ada tanda koma diff menambahkan baris
trailing koma diff menambahkan baris
Mari kita mulai dengan let
dan const
terlebih dahulu. Satu langkah pada satu waktu.
Saya pikir waktu tersebut terlalu dekat untuk menelepon. Saya mendapatkan hasil yang berbeda
Meskipun di Chrome 70 mereka tidak terlalu dekat
saat kita melakukannya
Izinkan saya menambahkan satu POV lagi untuk tanda koma Anda dapat melihat tanda koma mirip dengan titik koma
Ini adalah kode hukum yang sempurna
{
doThis();
doThat();
doOther()
}
Baris terakhir tidak memiliki titik koma. Satu POV adalah melihat koma sebagai hal yang sama. Mungkin seperti ilusi orang/lampu.
Apakah Anda melihat 2 orang atau tongkat lampu keduanya sah. Tetapi dalam kasus itu, dengan koma karena kedua POV cocok ("koma di ujung terlihat seperti , tidak terdefinisi" vs "koma hilang terlihat tidak konsisten") yang satu memiliki manfaat objektif dan yang lainnya tidak ...?
Saya mencoba menambahkan const
di suatu tempat dalam kode dan tidak dapat dikompilasi lagi...
@mrdoob Format output harus diatur ke ES6
bukan ES
atau ES5
.
Menutup mendukung #6419.
Komentar yang paling membantu
Semua browser baik-baik saja dengan koma itu dalam array dan objek selama> 10 tahun kecuali IE
Biarkan saya menambahkan daripada melihatnya sebagai hal yang aneh POV lain adalah bahwa sintaks sebenarnya koma diperlukan itu hanya browser memberi Anda istirahat dan tidak memerlukan yang terakhir. Keanehan seseorang adalah kecantikan orang lain. Saya menemukan konsistensi setiap baris yang sama lebih menyenangkan secara pribadi daripada baris terakhir yang berbeda. Tentu saja itu adalah preferensi pribadi, saya hanya membahasnya dengan cara lain untuk melihat sesuatu.
untuk perbedaan saya menemukan perbandingan ini secara online
tidak ada tanda koma diff menambahkan baris
trailing koma diff menambahkan baris