console.log("double");
vs. console.log('single');
Saya melihat semakin banyak perpustakaan JavaScript di luar sana menggunakan tanda kutip tunggal ketika menangani string. Apa alasan untuk menggunakan salah satunya? Saya pikir mereka cukup dipertukarkan.
javascript
string
conventions
aemkei
sumber
sumber
alert("It's \"game\" time.");
ataualert('It\'s "game" time.');
?Jawaban:
Alasan yang paling mungkin untuk penggunaan single vs double di perpustakaan yang berbeda adalah preferensi programmer dan / atau konsistensi API. Selain konsisten, gunakan yang paling cocok dengan string.
Menggunakan jenis kutipan lain sebagai literal:
Ini bisa menjadi rumit:
Pilihan lain, baru dalam ES6, adalah Templat literal yang menggunakan
back-tick
karakter:Literal template menawarkan sintaks yang bersih untuk: interpolasi variabel, string multi-line, dan banyak lagi.
Perhatikan bahwa JSON secara resmi ditentukan untuk menggunakan tanda kutip ganda, yang mungkin layak dipertimbangkan tergantung pada persyaratan sistem.
sumber
alert('It’s “game” time')
vsalert("It’s “game” time")
- tidak masalah. Anda hanya perlu melarikan diri dalam kasus (jarang) di mana tanda prima tunggal atau ganda'
,"
sebenarnya sesuai.Jika Anda berurusan dengan JSON, harus dicatat bahwa secara ketat, string JSON harus dikutip ganda. Tentu, banyak perpustakaan mendukung tanda kutip tunggal juga, tetapi saya punya masalah besar di salah satu proyek saya sebelum menyadari bahwa satu kutipan string sebenarnya tidak sesuai dengan standar JSON.
sumber
var jsonString = '{"key1":"value1"}';
(Bukannya saya menyarankan untuk membangun JSON secara manual.).stringify()
.Tidak ada solusi yang lebih baik ; namun, saya ingin berargumen bahwa tanda kutip ganda mungkin lebih diinginkan pada waktu:
"
untuk mengidentifikasi suatu bagian dari teks yang dikutip. Jika kita menggunakan kutipan tunggal'
, pembaca dapat salah menafsirkannya sebagai kontraksi. Makna lain dari suatu bagian teks yang dikelilingi oleh'
menunjukkan makna 'sehari-hari'. Masuk akal untuk tetap konsisten dengan bahasa yang sudah ada sebelumnya, dan ini mungkin memudahkan pembelajaran dan interpretasi kode."I'm going to the mall"
, vs versi sebaliknya melarikan diri:'I\'m going to the mall'
.Kutipan ganda berarti string dalam banyak bahasa lain . Saat Anda mempelajari bahasa baru seperti Java atau C, tanda kutip ganda selalu digunakan. Di Ruby, PHP, dan Perl, string dengan tanda kutip tunggal menyiratkan tidak ada backslash yang lolos sementara tanda kutip ganda mendukungnya.
Notasi JSON ditulis dengan tanda kutip ganda.
Meskipun demikian, seperti yang dinyatakan orang lain, yang paling penting adalah tetap konsisten.
sumber
Bagian 7.8.4 dari spesifikasi menjelaskan notasi string literal. Satu-satunya perbedaan adalah DoubleStringCharacter adalah "SourceCharacter tapi bukan double-quote" dan SingleStringCharacter adalah "SourceCharacter tetapi bukan single-quote". Jadi satu - satunya perbedaan dapat ditunjukkan dengan demikian:
Jadi itu tergantung pada berapa banyak kutipan yang ingin Anda lakukan. Jelas hal yang sama berlaku untuk tanda kutip ganda dalam string kutipan ganda.
sumber
"{\"name\": \"Peter\"}"
vs'{"name": "Peter"}'
? Memang, Anda bisa mengatakan ini adalah perbedaan yang sama, tetapi itu pasti akan mempengaruhi keputusan Anda dengan cara yang berbeda dari contoh di atas.Kutipan tunggal
Saya berharap tanda kutip ganda adalah standar, karena mereka membuat sedikit lebih masuk akal , tapi saya tetap menggunakan tanda kutip tunggal karena mereka mendominasi adegan.
Kutipan tunggal:
Tidak ada preferensi:
Kutipan ganda:
.eslintrc
)sumber
Saya ingin mengatakan perbedaannya murni gaya, tetapi saya benar-benar ragu. Perhatikan contoh berikut:
Di Safari, Chrome, Opera, dan Internet Explorer (diuji di IE7 dan IE8), ini akan mengembalikan yang berikut:
Namun, Firefox akan menghasilkan hasil yang sedikit berbeda:
Kutipan tunggal telah digantikan oleh tanda kutip ganda. (Perhatikan juga bagaimana indentasi spasi diganti dengan empat spasi.) Ini memberi kesan bahwa setidaknya satu browser mem-parsing JavaScript secara internal seolah-olah semuanya ditulis menggunakan tanda kutip ganda. Orang mungkin berpikir, Firefox membutuhkan waktu lebih sedikit untuk mem-parsing JavaScript jika semuanya sudah ditulis sesuai dengan 'standar' ini.
Yang, omong-omong, membuatku menjadi panda yang sangat sedih, karena aku pikir satu tanda kutip terlihat jauh lebih bagus dalam kode. Plus, dalam bahasa pemrograman lain, mereka biasanya lebih cepat digunakan daripada tanda kutip ganda, jadi itu hanya masuk akal jika hal yang sama berlaku untuk JavaScript.
Kesimpulan: Saya pikir kita perlu melakukan lebih banyak penelitian tentang ini.
Sunting: Ini mungkin menjelaskan hasil tes Peter-Paul Koch dari tahun 2003.
Sunting 2014: Versi modern Firefox / Spidermonkey tidak melakukan ini lagi.
sumber
.toString
tetapi sekarang mengembalikan salinan asli. Firefox modern tidak akan memiliki masalah ini.Jika Anda melakukan inline JavaScript (bisa dibilang hal yang "buruk", tetapi menghindari diskusi itu) tanda kutip tunggal adalah satu -satunya pilihan Anda untuk literal string, saya percaya.
mis. ini berfungsi dengan baik:
Tetapi Anda tidak dapat membungkus "hi" dengan tanda kutip ganda, melalui metode melarikan diri apa pun yang saya ketahui. Bahkan
"
yang akan menjadi tebakan terbaik saya (karena Anda lolos dari kutipan dalam nilai atribut HTML) tidak berfungsi untuk saya di Firefox.\"
tidak akan berfungsi karena pada titik ini Anda melarikan diri untuk HTML, bukan JavaScript.Jadi, jika nama gim ini konsisten, dan Anda akan melakukan inline JavaScript di beberapa bagian aplikasi Anda, saya pikir satu tanda kutip adalah pemenangnya. Seseorang tolong perbaiki saya jika saya salah.
sumber
<a onclick="alert(%22hi%22);">hi</a>
- dari memori ini berfungsi, meskipun mungkin dalam atribut href sebagai gantinya<a href="javascript:alert(%22hi%22);">hi</a>
alert("hi")
bukan JavaScript yang valid. Tetapi nilai atribut dikodekan. w3.org/TR/html4/intro/sgmltut.html#didx-attribute"
adalah cara yang tepat untuk menghindari kutip ganda di dalam atribut HTML. Ini berfungsi dengan baik di Firefox. @Denilson, XML (dan karenanya XHTML) memungkinkan kutipan tunggal dan ganda. LihatAttValue
literal dalam spesifikasi XML di w3.org/TR/REC-xml/#d0e888 .Secara teknis tidak ada perbedaan, itu hanya masalah gaya dan konvensi.
Douglas Crockford merekomendasikan penggunaan tanda kutip tunggal untuk string internal dan tanda kutip ganda untuk eksternal (oleh eksternal kami maksudkan itu ditampilkan kepada pengguna aplikasi, seperti pesan atau peringatan).
Saya pribadi mengikuti itu.
UPDATE: Tampaknya Tuan Crockford berubah pikiran dan sekarang merekomendasikan penggunaan tanda kutip ganda sepanjang :)
sumber
Sebenarnya, tidak ada perbedaan makna; jadi pilihannya turun ke kenyamanan.
Berikut adalah beberapa faktor yang dapat memengaruhi pilihan Anda:
sumber
'
adalah00100111
dalam biner, sementara"
ini00100010
dalam biner. Dengan demikian, tanda kutip ganda mengambil setengah dari kekuatan untuk menyimpan sebagai tanda kutip tunggal. Itulah perbedaan di sana.Mari kita lihat apa yang dilakukan referensi.
Di dalam jquery.js, setiap string dikutip ganda.
Jadi, mulai sekarang, saya akan menggunakan string yang dikutip ganda. (Saya menggunakan tunggal!)
sumber
Tetap konsisten dalam apa yang Anda gunakan. Tetapi jangan mengecewakan tingkat kenyamanan Anda.
Pembaruan ES6
Menggunakan sintaks literal template .
sumber
Ini sebagian besar masalah gaya dan preferensi. Ada beberapa eksplorasi teknis yang agak menarik dan bermanfaat di jawaban lain, jadi mungkin satu-satunya hal yang dapat saya tambahkan adalah menawarkan sedikit nasihat duniawi.
Jika Anda coding di sebuah perusahaan atau tim, maka itu mungkin ide yang baik untuk mengikuti "gaya rumah".
Jika Anda sendirian meretas beberapa proyek sampingan, maka lihatlah beberapa pemimpin terkemuka di komunitas. Misalnya, Anda masuk ke Node.js. Lihatlah modul inti, mis. Underscore.js atau ekspres dan lihat konvensi apa yang mereka gunakan, dan pertimbangkan untuk mengikuti itu.
Jika kedua konvensi sama-sama digunakan, maka tunda
preferensi pribadi Anda .
Jika Anda tidak memiliki preferensi pribadi, maka balikkan koin.
Jika Anda tidak memiliki koin, maka bir ada pada saya;)
sumber
Saya harap saya tidak menambahkan sesuatu yang jelas, tetapi saya telah berjuang dengan Django dan Ajax dan JSON dalam hal ini.
Dengan asumsi bahwa dalam kode HTML Anda Anda menggunakan tanda kutip ganda, seperti biasanya, saya sangat menyarankan untuk menggunakan tanda kutip tunggal untuk sisanya dalam JavaScript.
Jadi saya setuju dengan @ady tetapi dengan hati-hati.
Intinya adalah: Dalam JavaScript mungkin tidak masalah, tetapi segera setelah Anda menyematkannya ke dalam HTML atau sejenisnya, Anda mulai mendapatkan masalah. Anda harus tahu apa yang sebenarnya melarikan diri, membaca, melewati string Anda.
Kasus sederhana saya adalah:
Anda dapat melihat \ 'di bidang ketiga showThis.
Kutipan ganda tidak berfungsi!
Jelas mengapa, tetapi juga jelas mengapa kita harus berpegang pada tanda kutip tunggal ... .. kurasa ..
Kasing ini adalah penyematan HTML yang sangat sederhana, kesalahan ini dihasilkan oleh salinan / tempel sederhana dari kode JavaScript 'dikutip ganda'.
Jadi untuk menjawab pertanyaan:
Cobalah untuk menggunakan tanda kutip tunggal saat berada dalam HTML. Mungkin menyimpan beberapa masalah debug ...
sumber
Tidak yakin apakah ini relevan di dunia saat ini, tetapi tanda kutip ganda digunakan untuk konten yang perlu memiliki karakter kontrol diproses dan tanda kutip tunggal untuk string yang tidak.
Compiler akan menjalankan manipulasi string pada string yang dikutip ganda sambil meninggalkan string yang dikutip secara harfiah tidak tersentuh. Ini digunakan untuk mengarah ke pengembang 'baik' memilih untuk menggunakan tanda kutip tunggal untuk string yang tidak mengandung karakter kontrol suka
\n
atau\0
(tidak diproses dalam tanda kutip tunggal) dan tanda kutip ganda ketika mereka membutuhkan string diurai (dengan sedikit biaya dalam siklus CPU untuk memproses string).sumber
Jika Anda menggunakan jshint , itu akan menimbulkan kesalahan jika Anda menggunakan string kutipan ganda.
Saya menggunakannya melalui perancah Yeoman dari AngularJS tapi mungkin ada cara untuk mengkonfigurasi ini.
Omong-omong, ketika Anda menangani HTML ke dalam JavaScript, lebih mudah menggunakan satu kutipan:
Dan setidaknya JSON menggunakan tanda kutip ganda untuk string reprensent.
Tidak ada cara sepele untuk menjawab pertanyaan Anda
sumber
Berbicara tentang kinerja, kutipan tidak akan pernah menjadi hambatan Anda, namun kinerjanya sama dalam kedua kasus.
Berbicara tentang kecepatan pengkodean, jika Anda gunakan
'
untuk membatasi string, Anda harus menghindari"
tanda kutip. Anda lebih cenderung perlu menggunakan"
di dalam string, misalnya:Kemudian, saya lebih suka menggunakan
'
untuk membatasi string, jadi saya harus melarikan diri lebih sedikit karakter.sumber
Salah satu alasan (konyol) untuk menggunakan tanda kutip tunggal adalah karena mereka tidak mengharuskan Anda menekan tombol shift untuk mengetikkannya, sedangkan kuotasi ganda berlaku. (Saya berasumsi bahwa string rata-rata tidak perlu melarikan diri, yang merupakan asumsi yang masuk akal.) Sekarang, anggaplah setiap hari saya kode 200 baris kode. Mungkin dalam 200 baris saya punya 30 kutipan. Mungkin mengetikkan kutipan ganda membutuhkan waktu 0,1 detik lebih banyak daripada mengetikkan kutipan tunggal (karena saya harus menekan tombol shift). Kemudian pada hari tertentu, saya buang 3 detik. Jika saya kode dengan cara ini selama 200 hari setahun selama 40 tahun, maka saya telah menyia-nyiakan 6,7 jam dalam hidup saya. Bahan untuk dipikirkan.
sumber
var description = "This is a \"quick\" test";
pada keyboard bahasa Inggris. Untuk keyboard bahasa Inggris, jari kelingking Anda harus bergerak dari tombol shift kiri ke tombol Q di baris atas alih-alih bergerak dari tombol A. ke tombol Q. Dengan kata lain, itu harus menempuh jarak dua kali jarak Saya tidak yakin di mana tombolnya ada pada keyboard Jerman, tapi saya yakin ada contoh analognyaMendukung kutipan tunggal
Selain itu, HTML sebaris biasanya merupakan anti-pola. Lebih suka templat.
Sekali lagi, Anda tidak harus membangun JSON dengan cara ini. JSON.stringify () seringkali cukup. Jika tidak, gunakan templat.
Mendukung kutip ganda
Mendukung keduanya
Tidak ada perbedaan antara keduanya dalam JavaScript. Karena itu, Anda dapat menggunakan apa pun yang nyaman saat ini. Misalnya, string literal berikut semuanya menghasilkan string yang sama:
Kutipan tunggal untuk string internal dan ganda untuk eksternal. Itu memungkinkan Anda untuk membedakan konstanta internal dari string yang akan ditampilkan kepada pengguna (atau ditulis ke disk dll.). Jelas, Anda harus menghindari menempatkan yang terakhir dalam kode Anda, tetapi itu tidak selalu bisa dilakukan.
sumber
Satu hal lagi yang mungkin ingin Anda pertimbangkan sebagai alasan untuk beralih dari tanda kutip ganda ke tanda kutip tunggal adalah peningkatan popularitas skrip sisi server. Saat menggunakan PHP, Anda dapat meneruskan variabel dan mem-parsing fungsi javascript menggunakan string dan variabel dalam PHP.
Jika Anda menulis string dan menggunakan tanda kutip ganda untuk PHP Anda, Anda tidak perlu melepaskan diri dari tanda kutip tunggal dan PHP akan secara otomatis mengambil nilai variabel untuk Anda.
Contoh: Saya perlu menjalankan fungsi javascript menggunakan variabel dari server saya.
Ini menghemat banyak kerumitan karena harus berurusan dengan bergabung dengan string, dan saya dapat secara efektif memanggil javascript dari PHP. Ini hanya satu contoh, tetapi ini mungkin salah satu dari beberapa alasan mengapa programmer default ke tanda kutip tunggal dalam javascript.
Kutipan dari dokumen PHP : "Fitur paling penting dari string yang dikutip ganda adalah fakta bahwa nama variabel akan diperluas. Lihat parsing string untuk detailnya."
sumber
Ada orang yang mengaku melihat perbedaan kinerja: utas milis lama . Tetapi saya tidak dapat menemukan satupun dari mereka yang dikonfirmasi.
Hal utama adalah melihat kutipan seperti apa (ganda atau tunggal) yang Anda gunakan di dalam string Anda. Ini membantu untuk menjaga jumlah lolos rendah. Misalnya ketika Anda bekerja dengan html di dalam string Anda, lebih mudah untuk menggunakan tanda kutip tunggal sehingga Anda tidak perlu melarikan diri dari semua tanda kutip ganda di sekitar atribut.
sumber
Saya akan menggunakan tanda kutip ganda ketika tanda kutip tunggal tidak dapat digunakan dan sebaliknya:
Dari pada:
sumber
Tidak ada perbedaan antara tanda kutip tunggal dan ganda dalam JavaScript.
Spesifikasi itu penting:
Mungkin ada perbedaan kinerja, tetapi mereka sangat minimum dan dapat berubah setiap hari sesuai dengan implementasi browser. Diskusi lebih lanjut sia-sia kecuali jika aplikasi JavaScript Anda panjangnya ratusan ribu.
Ini seperti tolok ukur jika
lebih cepat dari
(ruang ekstra)
hari ini, di browser dan platform tertentu, dll.
sumber
Saat menggunakan CoffeeScript saya menggunakan tanda kutip ganda. Saya setuju bahwa Anda harus memilih yang mana dan tetap menggunakannya. CoffeeScript memberi Anda interpolasi saat menggunakan tanda kutip ganda.
ES6 menggunakan tanda centang kembali (`) untuk string templat. Yang mungkin memiliki alasan yang bagus, tetapi ketika pengkodean dapat merepotkan untuk mengubah karakter string string dari tanda kutip atau tanda kutip ganda menjadi tanda centang kembali untuk mendapatkan fitur interpolasi. CoffeeScript mungkin tidak sempurna, tetapi menggunakan karakter literal string yang sama di mana-mana (tanda kutip ganda) dan selalu dapat menginterpolasi adalah fitur yang bagus.
sumber
Jika Anda melompat maju mundur antara JavaScript dan C #, yang terbaik adalah melatih jari Anda untuk konvensi umum yang merupakan tanda kutip ganda.
sumber
Saya sudah menjalankan berikut ini sekitar 20 kali. Dan tampaknya tanda kutip ganda sekitar 20% lebih cepat.
Bagian yang menyenangkan adalah, jika Anda mengubah bagian 2 dan bagian 1, tanda kutip tunggal sekitar 20% lebih cepat.
sumber
var dummy_date = new Date()
ke awalSama sekali tidak ada perbedaan, jadi sebagian besar masalah selera dan apa yang ada di string (atau jika kode JS itu sendiri dalam string), untuk menjaga jumlah lolos rendah.
Legenda perbedaan kecepatan mungkin berasal dari dunia PHP, di mana kedua kutipan memiliki perilaku yang berbeda.
sumber
Setelah membaca semua jawaban yang mengatakan itu mungkin lebih cepat atau mungkin memiliki keuntungan, saya akan mengatakan kutipan ganda lebih baik atau mungkin lebih cepat juga karena kompilator penutupan Google mengonversi kutipan tunggal menjadi kutipan ganda.
sumber
Sekarang karena tahun 2020, kita harus mempertimbangkan opsi ketiga untuk Javascript: Backtick tunggal untuk semuanya.
Ini dapat digunakan di mana-mana, bukan kutipan tunggal atau ganda.
Ini memungkinkan Anda untuk melakukan semua hal!
Ini memungkinkan banyak baris: `
Ini
Membuat
Javascript
Lebih baik!
`
Itu juga tidak menyebabkan kerugian kinerja saat mengganti dua lainnya: https://medium.com/javascript-in-plain-english/are-backticks-slower-than-other-strings-in-javascript-ce4abf9b9fa
sumber
Jika sumber JS Anda adalah:
Sumber HTML adalah:
atau untuk HTML5
JS memungkinkan array seperti itu:
Tetapi jika Anda mengencangkannya, itu akan menjadi alasan yang sesuai:
Saya yakin ini butuh waktu.
sumber
Hanya dengan menambahkan 2 sen saya: Dalam bekerja dengan JS dan PHP beberapa tahun yang lalu, saya sudah terbiasa menggunakan tanda kutip tunggal sehingga saya dapat mengetikkan karakter escape ('\') tanpa harus menghindarinya juga. Saya biasanya menggunakannya ketika mengetik string mentah dengan path file, dll. ( Http://en.wikipedia.org/wiki/String_literal#Raw_strings )
Bagaimanapun, konvensi saya akhirnya menjadi penggunaan tanda kutip tunggal pada string mentah tipe pengenal, seperti
if (typeof s == 'string') ...
(di mana karakter escape tidak akan pernah digunakan - selamanya), dan tanda kutip ganda untuk teks , seperti "Hei, ada apa?". Saya juga menggunakan tanda kutip tunggal dalam komentar sebagai konvensi tipografis untuk menunjukkan nama pengenal. Ini hanya aturan praktis, dan saya memutuskan hanya jika diperlukan, seperti ketika mengetik string HTML'<a href="#"> like so <a>'
(meskipun Anda bisa membalikkan tanda kutip di sini juga). Saya juga menyadari bahwa, dalam kasus JSON, tanda kutip ganda digunakan untuk nama - tetapi di luar itu, secara pribadi, saya lebih suka tanda kutip tunggal ketika melarikan diri tidak pernah diperlukan untuk teks di antara tanda kutip - sepertidocument.createElement('div')
.Intinya, dan seperti yang telah disebutkan / disinggung oleh banyak orang, pilihlah sebuah konvensi, tetap padanya, dan hanya menyimpang jika diperlukan.
sumber