Pertanyaan Kapan menggunakan tanda kutip ganda atau tunggal di JavaScript?


console.log("double"); vs console.log('single');

Saya melihat semakin banyak pustaka JavaScript di luar sana menggunakan tanda kutip tunggal saat menangani string. Apa alasan untuk menggunakan salah satu dari yang lain? Saya pikir mereka cukup banyak dipertukarkan.


1684


asal


Jawaban:


Alasan yang paling mungkin untuk menggunakan single vs double di pustaka yang berbeda adalah preferensi programmer dan / atau konsistensi API.

Selain konsisten, gunakan mana yang paling sesuai dengan string :.

Menggunakan jenis kutipan lainnya sebagai literal:

alert('Say "Hello"');
alert("Say 'Hello'");

... Tapi ini bisa jadi rumit ...

alert("It's \"game\" time.");
alert('It\'s "game" time.');

Pilihan lain, baru di ES6, adalah Literal template yang menggunakan back-tick karakter:

alert(`Use "double" and 'single' quotes in the same string`);
alert(`The escape the \` back-tick character in a string`);

Literal template menawarkan sintaks bersih untuk: interpolasi variabel, string multi-baris, dan banyak lagi.


1042



Jika Anda berurusan dengan JSON, perlu dicatat bahwa secara ketat, string JSON harus dikutip ganda. Tentu, banyak perpustakaan mendukung tanda kutip tunggal juga, tapi saya punya masalah besar di salah satu proyek saya sebelum menyadari bahwa satu kutipan string sebenarnya tidak sesuai dengan standar JSON.


567



Tidak ada solusi yang lebih baik; namun, saya ingin menyatakan bahwa tanda kutip ganda mungkin lebih diinginkan pada waktu:

  • Pendatang baru sudah akan terbiasa dengan tanda kutip ganda dari bahasa mereka. Dalam bahasa Inggris, kita harus menggunakan tanda kutip ganda " untuk mengidentifikasi bagian dari kutipan teks. Jika kita menggunakan satu kutipan ', pembaca dapat salah menafsirkannya sebagai kontraksi. Arti lain dari suatu bagian teks yang dikelilingi oleh ' menunjukkan arti 'bahasa sehari-hari'. Masuk akal untuk tetap konsisten dengan bahasa yang sudah ada sebelumnya, dan ini mungkin mempermudah pembelajaran dan interpretasi kode.
  • Kutipan ganda menghilangkan kebutuhan untuk menghindari apostrophes (seperti dalam kontraksi). Pertimbangkan string: "I'm going to the mall", vs. versi sebaliknya yang lolos: 'I\'m going to the mall'.
  • Tanda kutip ganda berarti string dalam banyak bahasa lain. Ketika Anda mempelajari bahasa baru seperti Java atau C, tanda kutip ganda selalu digunakan. Dalam Ruby, PHP dan Perl, string yang dikutip tunggal tidak menyiratkan backslash escapes 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.


244



Itu hanya perbedaan ditunjukkan dalam hal berikut:

'A string that\'s single quoted'

"A string that's double quoted"

Jadi, hanya berapa banyak kutipan yang Anda ingin lakukan. Tentunya hal yang sama berlaku untuk tanda kutip ganda dalam string ganda yang dikutip.


111



Kutipan Tunggal

Saya berharap tanda kutip ganda adalah standar, karena mereka membuat sedikit lebih masuk akal, tapi saya tetap menggunakan tanda kutip tunggal karena mendominasi pemandangan.

Kutipan tunggal:

Tidak ada preferensi:

Tanda kutip ganda:


68



Saya ingin mengatakan perbedaannya murni gaya, tapi saya benar-benar memiliki keraguan. Perhatikan contoh berikut:

/*
   Add trim() functionality to JavaScript...
    1. By extending the String prototype
    2. By creating a 'stand-alone' function
   This is just to demonstrate results are the same in both cases.
*/

// Extend the String prototype with a trim() method
String.prototype.trim = function() {
 return this.replace(/^\s+|\s+$/g, '');
};

// 'Stand-alone' trim() function
function trim(str) {
 return str.replace(/^\s+|\s+$/g, '');
};

document.writeln(String.prototype.trim);
document.writeln(trim);

Di Safari, Chrome, Opera, dan Internet Explorer (diuji di IE7 dan IE8), ini akan mengembalikan yang berikut:

function () {
 return this.replace(/^\s+|\s+$/g, '');
}
function trim(str) {
 return str.replace(/^\s+|\s+$/g, '');
}

Namun, Firefox akan menghasilkan hasil yang sedikit berbeda:

function () {
    return this.replace(/^\s+|\s+$/g, "");
}
function trim(str) {
    return str.replace(/^\s+|\s+$/g, "");
}

Tanda kutip tunggal telah diganti dengan tanda kutip ganda. (Perhatikan juga bagaimana ruang indentasi digantikan oleh empat spasi.) Ini memberi kesan bahwa setidaknya satu browser mengurai JavaScript secara internal seolah-olah semuanya ditulis menggunakan tanda kutip ganda. Orang mungkin berpikir, dibutuhkan waktu yang lebih sedikit Firefox untuk mengurai JavaScript jika semuanya sudah ditulis sesuai dengan 'standar' ini.

Yang, omong-omong, membuat saya panda yang sangat sedih, karena saya pikir tanda kutip tunggal terlihat jauh lebih bagus dalam kode. Plus, dalam bahasa pemrograman lain, mereka biasanya lebih cepat digunakan daripada tanda kutip ganda, jadi itu hanya akan masuk akal jika hal yang sama diterapkan pada JavaScript.

Kesimpulan: Saya pikir kita perlu melakukan penelitian lebih lanjut tentang ini.

Edit: Ini mungkin menjelaskan Hasil tes Peter-Paul Koch dari belakang pada tahun 2003.

Tampaknya tanda kutip tunggal terkadang lebih cepat di Windows Explorer (sekitar 1/3 dari pengujian saya memang menunjukkan waktu respons yang lebih cepat), tetapi jika Mozilla menunjukkan perbedaan sama sekali, ia menangani tanda kutip ganda sedikit lebih cepat. Saya tidak menemukan perbedaan sama sekali di Opera.

Edit 2014: Versi modern Firefox / Spidermonkey tidak melakukan ini lagi.


54



Jika Anda melakukan JavaScript sebaris (bisa dibilang hal yang "buruk", tetapi menghindari diskusi itu) tunggal kutipan adalah satu-satunya pilihan Anda untuk literal string, saya percaya.

misalnya, ini berfungsi dengan baik:

<a onclick="alert('hi');">hi</a>

Tetapi Anda tidak bisa membungkus "hi" dalam tanda kutip ganda, melalui metode melarikan diri yang saya sadari. Bahkan &quot; yang akan menjadi tebakan terbaik saya (karena Anda melarikan diri tanda kutip dalam nilai atribut HTML) tidak bekerja untuk saya di Firefox. \" tidak akan berfungsi karena pada titik ini Anda melarikan diri untuk HTML, bukan JavaScript.

Jadi, jika nama permainan adalah konsistensi, dan Anda akan melakukan beberapa JavaScript sebaris di bagian-bagian aplikasi Anda, saya pikir tanda kutip tunggal adalah pemenangnya. Tolong perbaiki aku jika aku salah.


30



Secara teknis tidak ada perbedaan, hanya masalah gaya dan konvensi.

Douglas Crockford merekomendasikan menggunakan tanda kutip tunggal untuk string internal dan tanda kutip ganda untuk eksternal (oleh eksternal berarti kami untuk ditampilkan kepada pengguna aplikasi, seperti pesan atau peringatan).

Saya pribadi mengikuti itu.

PEMBARUAN: Tampaknya Mr. Crockford berubah pikiran dan sekarang merekomendasikan menggunakan tanda kutip ganda di seluruh :)


29



Sebenarnya, tidak ada perbedaan dalam makna; jadi pilihannya tergantung pada kenyamanan.

Berikut beberapa faktor yang dapat memengaruhi pilihan Anda:

  • Gaya rumah: Beberapa kelompok pengembang sudah menggunakan satu konvensi atau yang lainnya.
  • Persyaratan sisi klien: Apakah Anda akan menggunakan tanda kutip dalam string? (Lihat jawaban Ady).
  • Bahasa sisi server: orang VB.Net mungkin memilih untuk menggunakan tanda kutip tunggal untuk java-script sehingga skrip dapat dibangun di sisi server (VB.Net menggunakan tanda kutip ganda untuk string, sehingga string java-script mudah dibedakan jika mereka menggunakan tanda kutip tunggal).
  • Kode pustaka: Jika Anda menggunakan pustaka yang menggunakan gaya tertentu, Anda dapat mempertimbangkan untuk menggunakan gaya yang sama.
  • Preferensi pribadi: Anda mungkin berpikir satu atau gaya lain terlihat lebih baik.

23