javascript - जावास्क्रिप्ट में डबल या सिंगल कोट्स का उपयोग कब करें?




string conventions (20)

पेशेवरों और विपक्ष की जांच

एकल उद्धरण के पक्ष में

  • कम दृश्य अव्यवस्था।
  • एचटीएमएल उत्पन्न करना: एचटीएमएल विशेषताओं को आमतौर पर डबल कोट्स द्वारा सीमित किया जाता है।

elem.innerHTML = '<a href="' + url + '">Hello</a>';
हालांकि, एकल उद्धरण एचटीएमएल में कानूनी हैं।

elem.innerHTML = "<a href='" + url + "'>Hello</a>";

इसके अलावा, इनलाइन एचटीएमएल आम तौर पर एक विरोधी पैटर्न है। टेम्पलेट पसंद करें।

  • JSON जेनरेट करना: JSON में केवल डबल कोट्स की अनुमति है।

myJson = '{ "hello world": true }';

फिर, आपको इस तरह JSON का निर्माण नहीं करना चाहिए। JSON.stringify () अक्सर पर्याप्त है। यदि नहीं, टेम्पलेट का उपयोग करें।

डबल कोट्स के पक्ष में

  • यदि आपके पास रंग कोडिंग नहीं है तो डबल्स स्पॉट करना आसान है। कंसोल लॉग या किसी प्रकार के व्यू-सोर्स सेटअप की तरह।
  • अन्य भाषाओं की समानता: शैल प्रोग्रामिंग (बैश इत्यादि) में, एकल-उद्धृत स्ट्रिंग अक्षर मौजूद हैं, लेकिन इनके अंदर से बचने का अर्थ नहीं है। सी और जावा तारों के लिए डबल कोट्स और वर्णों के लिए एकल उद्धरण का उपयोग करते हैं।
  • यदि आप कोड जेएसओएन वैध होना चाहते हैं, तो आपको डबल कोट्स का उपयोग करने की आवश्यकता है।

दोनों के पक्ष में

जावास्क्रिप्ट में दोनों के बीच कोई अंतर नहीं है। इसलिए, आप इस समय जो कुछ भी सुविधाजनक है उसका उपयोग कर सकते हैं। उदाहरण के लिए, निम्नलिखित स्ट्रिंग अक्षर सभी एक ही स्ट्रिंग का उत्पादन करते हैं:

    "He said: \"Let's go!\""
    'He said: "Let\'s go!"'
    "He said: \"Let\'s go!\""
    'He said: \"Let\'s go!\"'

आंतरिक तारों के लिए सिंगल कोट्स और बाहरी के लिए डबल। यह आपको आंतरिक स्थिरांक को तारों से अलग करने की अनुमति देता है जो उपयोगकर्ता को प्रदर्शित किया जाना चाहिए (या डिस्क आदि पर लिखा गया है)। जाहिर है, आपको बाद वाले को अपने कोड में डालने से बचना चाहिए, लेकिन यह हमेशा नहीं किया जा सकता है।

console.log("double"); बनाम console.log('single');

तारों को संभालने के दौरान मैं सिंगल कोट्स का उपयोग करके वहां अधिक से अधिक जावास्क्रिप्ट पुस्तकालयों को देखता हूं। एक दूसरे का उपयोग करने के कारण क्या हैं? मैंने सोचा कि वे काफी अधिक परिवर्तनीय हैं।


एकल कोट

मेरी इच्छा है कि डबल कोट्स मानक थे, क्योंकि वे थोड़ी अधिक समझ में आते हैं , लेकिन मैं सिंगल कोट्स का उपयोग करता रहता हूं क्योंकि वे दृश्य पर हावी होते हैं।

एकल कोट:

कोई वरीयता नहीं:

डबल उद्धरण:


कड़ाई से बोलते हुए, अर्थ में कोई अंतर नहीं है; तो विकल्प सुविधा के लिए नीचे आता है।

यहां कई कारक हैं जो आपके choise को प्रभावित कर सकते हैं:

  • हाउस शैली: डेवलपर्स के कुछ समूह पहले से ही एक सम्मेलन या दूसरे का उपयोग करते हैं।
  • ग्राहक-पक्ष आवश्यकताएं: क्या आप तारों के भीतर उद्धरणों का उपयोग करेंगे? (एडी का जवाब देखें)।
  • सर्वर-साइड भाषा: वीबी.Net लोग जावा-स्क्रिप्ट के लिए सिंगल कोट्स का उपयोग करना चुन सकते हैं ताकि स्क्रिप्ट को सर्वर-साइड बनाया जा सके (VB.Net तारों के लिए डबल-कोट्स का उपयोग करता है, इसलिए जावा-स्क्रिप्ट तारों को अलग करना आसान होता है अगर वे सिंगल कोट्स का उपयोग करते हैं)।
  • लाइब्रेरी कोड: यदि आप किसी विशेष शैली का उपयोग करने वाली लाइब्रेरी का उपयोग कर रहे हैं, तो आप उसी शैली का उपयोग करने पर विचार कर सकते हैं।
  • व्यक्तिगत वरीयता: आप एक या अन्य शैली को बेहतर लग सकते हैं।

चलो देखते हैं कि एक संदर्भ क्या करता है।

Jquery.js के अंदर, प्रत्येक स्ट्रिंग को डबल-उद्धृत किया जाता है।

तो, अब शुरूआत में, मैं डबल-उद्धृत तारों का उपयोग करूंगा। (मैं सिंगल का उपयोग कर रहा था!)


प्रदर्शन के बारे में बात करते हुए, उद्धरण कभी आपकी बाधा नहीं होगी, हालांकि, प्रदर्शन दोनों मामलों में समान है।

कोडिंग गति के बारे में बात करते हुए, यदि आप ' स्ट्रिंग को सीमित करने ' लिए ' उपयोग करते हैं, तो आपको उद्धरणों से बचने की आवश्यकता होगी। स्ट्रिंग के अंदर आपको " उपयोग करने की अधिक संभावना है, उदाहरण के लिए:

//JSON Objects:
var jsonObject = '{"foo":"bar"}';
//HTML attributes:
document.getElementById("foobar").innerHTML = '<input type="text">';

फिर, मैं स्ट्रिंग को सीमित करने के लिए ' उपयोग करना पसंद करता हूं, इसलिए मुझे कम वर्णों से बचना है।


मुझे आशा है कि मैं कुछ स्पष्ट नहीं जोड़ रहा हूं, लेकिन मैं इस पर Django और Ajax और JSON के साथ संघर्ष कर रहा हूं।

यह मानते हुए कि आपके एचटीएमएल कोड में आप डबल कोट्स का उपयोग करते हैं, जैसा आमतौर पर होना चाहिए, मैं अत्यधिक जावास्क्रिप्ट में बाकी के लिए सिंगल कोट्स का उपयोग करने का सुझाव देता हूं।

तो मैं @ady से सहमत हूं लेकिन कुछ देखभाल के साथ।

मेरी निचली पंक्ति है: जावास्क्रिप्ट में शायद इससे कोई फर्क नहीं पड़ता, लेकिन जैसे ही आप इसे HTML के अंदर एम्बेड करते हैं या जैसे आप परेशानियां शुरू करते हैं। आपको पता होना चाहिए कि वास्तव में आपकी स्ट्रिंग से बचने, पढ़ने, पास करने के लिए क्या है।

मेरा सरल मामला था:

tbox.innerHTML = tbox.innerHTML + '<div class="thisbox_des" style="width:210px;" onmouseout="clear()"><a href="/this/thislist/'
                   + myThis[i].pk +'"><img src="/site_media/'
                   + myThis[i].fields.thumbnail +'" height="80" width="80" style="float:left;" onmouseover="showThis('
                   + myThis[i].fields.left +','
                   + myThis[i].fields.right +',\''
                   + myThis[i].fields.title +'\')"></a><p style="float:left;width:130px;height:80px;"><b>'
                   + myThis[i].fields.title +'</b> '
                   + myThis[i].fields.description +'</p></div>'

आप शो के तीसरे क्षेत्र में \ 'स्पॉट कर सकते हैं।

डबल कोट काम नहीं किया!

यह स्पष्ट है क्यों, लेकिन यह भी स्पष्ट है कि हमें सिंगल कोट्स पर क्यों रहना चाहिए ... .. मुझे लगता है ..

यह मामला एक बहुत ही सरल HTML एम्बेडिंग है, त्रुटि को एक डबल कॉपी / पेस्ट द्वारा 'डबल उद्धृत' जावास्क्रिप्ट कोड से उत्पन्न किया गया था।

तो सवाल का जवाब देने के लिए:

HTML के दौरान एकल कोट्स का उपयोग करने का प्रयास करें। यह कुछ डीबग मुद्दों को बचा सकता है ...


यदि आप jshint का उपयोग कर रहे हैं, तो यदि आप डबल कोट स्ट्रिंग का उपयोग करते हैं तो यह एक त्रुटि उठाएगा।

मैंने इसे एंगुलरजेएस के यमन स्कैफोल्डिंग के माध्यम से उपयोग किया लेकिन शायद किसी भी तरह इसे कॉन्फ़िगर करने के लिए एक प्रबंधक है।

वैसे, जब आप जावास्क्रिप्ट को HTML में संभालते हैं, तो एकल कोट का उपयोग करना आसान होता है:

var foo = '<div class="cool-stuff">Cool content</div>';

और कम से कम JSON स्ट्रिंग्स स्ट्रिंग के लिए डबल कोट्स का उपयोग कर रहा है।

आपके प्रश्न का उत्तर देने का कोई छोटा रास्ता नहीं है


यदि आप JSON से निपट रहे हैं, तो यह ध्यान दिया जाना चाहिए कि कड़ाई से बोलते हुए, JSON तारों को डबल उद्धृत किया जाना चाहिए। निश्चित रूप से, कई पुस्तकालय एकल उद्धरणों का भी समर्थन करते हैं, लेकिन मुझे यह समझने से पहले मेरी परियोजनाओं में से एक में बड़ी समस्याएं थीं कि एक स्ट्रिंग एक स्ट्रिंग वास्तव में जेएसओएन मानकों के अनुसार नहीं है।


यह ज्यादातर शैली और वरीयता का मामला है। अन्य उत्तरों में कुछ दिलचस्प और उपयोगी तकनीकी अन्वेषण हैं, इसलिए शायद एकमात्र चीज जो मैं जोड़ सकता हूं वह थोड़ा सांसारिक सलाह प्रदान करना है।

  • यदि आप किसी कंपनी या टीम में कोडिंग कर रहे हैं, तो शायद "घर शैली" का पालन करना एक अच्छा विचार है।

  • यदि आप अकेले कुछ पक्ष परियोजनाओं को हैक कर रहे हैं, तो समुदाय के कुछ प्रमुख नेताओं को देखें। उदाहरण के लिए आप Node.js. में हो रही है कोर मॉड्यूल पर एक नज़र डालें, उदाहरण के लिए underscore.js या व्यक्त करें और देखें कि वे किस सम्मेलन का उपयोग करते हैं, और उसके बाद विचार करें।

  • यदि दोनों सम्मेलनों का समान रूप से उपयोग किया जाता है, तो अपने व्यक्तिगत को स्थगित करें
    वरीयता।

  • यदि आपके पास कोई व्यक्तिगत वरीयता नहीं है, तो एक सिक्का फ्लिप करें।

  • यदि आपके पास सिक्का नहीं है, तो बियर मुझ पर है;)


यह सुनिश्चित नहीं है कि यह आज की दुनिया में प्रासंगिक है, लेकिन डबल कोट्स का उपयोग सामग्री के लिए किया जाता था, जिसके लिए नियंत्रण वर्णों को संसाधित करने और तारों के लिए एकल उद्धरण रखने की आवश्यकता होती थी।

कंपाइलर एक सिंगल उद्धृत स्ट्रिंग को सचमुच छेड़छाड़ करते हुए स्ट्रिंग मैनिपुलेशन को डबल कोटेड स्ट्रिंग पर चलाएगा। यह 'अच्छे' डेवलपर्स को स्ट्रिंग्स के लिए सिंगल कोट्स का उपयोग करने के लिए चुनता था, जिसमें नियंत्रण वर्ण नहीं होते थे, जिनमें \n या \0 (सिंगल कोट्स के भीतर संसाधित नहीं किया गया था) और डबल कोट्स जब उन्हें स्ट्रिंग पार्स की आवश्यकता होती थी (थोड़ी सी कीमत पर स्ट्रिंग को संसाधित करने के लिए सीपीयू चक्र में)।


सिंगल कोट्स का उपयोग करने के लिए एक (मूर्ख) कारण यह होगा कि उन्हें टाइप करने के लिए आपको Shift कुंजी को हिट करने की आवश्यकता नहीं है, जबकि एक डबल कोट करते हैं। (मुझे लगता है कि औसत स्ट्रिंग को भागने की आवश्यकता नहीं है, जो उचित धारणा है।) अब मान लीजिए कि हर दिन मैं कोड की 200 लाइन कोड करता हूं। शायद उन 200 लाइनों में मेरे पास 30 उद्धरण हैं। हो सकता है कि एक डबल कोट टाइप करने से एक सिंगल कोट टाइप करने से 0.1 सेकंड अधिक समय लगे (क्योंकि मुझे शिफ्ट कुंजी हिट करना है)। फिर किसी भी दिन, मैं 3 सेकंड बर्बाद करता हूं। यदि मैं 40 साल से 200 दिनों के लिए इस तरीके से कोड करता हूं, तो मैंने अपने जीवन के 6.7 घंटे बर्बाद कर दिए हैं। सोच के लिए भोजन।


आप जो भी उपयोग करते हैं उसमें स्थिरता रखें। लेकिन अपने आराम स्तर को मत छोड़ो।

"This is my string."; // :-|
"I'm invincible."; // comfortable :)
'You can\'t beat me.'; // uncomfortable :(
'Oh! Yes. I can "beat" you.'; // comfortable :)
"Do you really think, you can \"beat\" me?"; // uncomfortable :(
"You're my guest. I can \"beat\" you."; // sometimes, you've to :P
'You\'re my guest too. I can "beat" you too.'; // sometimes, you've to :P

ES6 अद्यतन

टेम्पलेट शाब्दिक वाक्यविन्यास का उपयोग करना।

`Be "my" guest. You're in complete freedom.`; // most comfort :D

कोई बेहतर समाधान नहीं है ; हालांकि, मैं तर्क देना चाहता हूं कि कभी-कभी दोहरे उद्धरण अधिक वांछनीय हो सकते हैं:

  • नवागंतुक पहले से ही अपनी भाषा से डबल कोट्स से परिचित होंगे । अंग्रेजी में, हमें उद्धृत पाठ के पारित होने की पहचान करने के लिए डबल कोट्स का उपयोग करना होगा। अगर हम एक उद्धरण का उपयोग करना चाहते थे, तो पाठक इसे संकुचन के रूप में गलत व्याख्या कर सकता है। ' घिरे पाठ के पारित होने का दूसरा अर्थ ' 'बोलचाल' अर्थ है। पूर्व-मौजूदा भाषाओं के अनुरूप रहने के लिए यह समझ में आता है, और यह संभवतः कोड की सीखने और व्याख्या को कम कर सकता है।
  • डबल उद्धरण apostrophes से बचने की आवश्यकता को खत्म (संकुचन में) के रूप में। स्ट्रिंग पर विचार करें: "I'm going to the mall" , बनाम अन्यथा बच निकला संस्करण: 'I\'m going to the mall'
  • डबल कोट्स का अर्थ कई अन्य भाषाओं में एक स्ट्रिंग है । जब आप जावा या सी जैसी नई भाषा सीखते हैं, तो डबल कोट्स हमेशा उपयोग किए जाते हैं। रुबी, पीएचपी और पर्ल में, एकल-उद्धृत तारों का अर्थ है कि कोई भी बैकस्लैश बच निकलता है जबकि डबल कोट्स उनका समर्थन करते हैं।

  • जेएसओएन नोटेशन डबल कोट्स के साथ लिखा गया है।

फिर भी, जैसा कि अन्य ने कहा है, लगातार बने रहने के लिए यह सबसे महत्वपूर्ण है।


After reading all the answers that say it maybe be faster or maybe have advantages, I would say double quote is better or maybe faster too because Google closure compiler convert single quotes to double quotes.


I've been running the following about 20 times. And it appears that double quotes are about 20% faster.

The fun part is, if you change part 2 and part 1 around, single quotes are about 20% faster.

//Part1
var r='';
var iTime3 = new Date().valueOf();
for(var j=0; j<1000000; j++) {
    r+='a';
}
var iTime4 = new Date().valueOf();
alert('With single quote : ' + (iTime4 - iTime3));  

//Part 2                
var s="";
var iTime1 = new Date().valueOf();
for(var i=0; i<1000000; i++) {
    s += "a";
}
var iTime2 = new Date().valueOf();
alert('With double quote: ' + (iTime2 - iTime1));

If you're jumping back an forth between JavaScript and C#, it's best to train your fingers for the common convention which is double quotes.


Just to add my 2 cents: In working with both JS and PHP a few years back, I've become accustom to using single quotes so I can type the escape character ('\') without having to escape it as well. I usually used it when typing raw strings with file paths, etc. ( http://en.wikipedia.org/wiki/String_literal#Raw_strings )

Anyhow, my convention ended up becoming the use of single quotes on identifier-type raw strings, such as if (typeof s == 'string') ... (in which escape characters would never be used - ever), and double quotes for texts , such as "Hey, what's up?". I also use single quotes in comments as a typographical convention to show identifier names. This is just a rule of thumb, and I break off only when needed, such as when typing HTML strings '<a href="#"> like so <a>' (though you could reverse the quotes here also). I'm also aware that, in the case of JSON, double quotes are used for the names - but outside that, personally, I prefer the single quotes when escaping is never required for the text between the quotes - like document.createElement('div') .

नीचे की रेखा, और जैसा कि कुछ ने उल्लेख किया है / संकेत दिया है, एक सम्मेलन चुनें, इसके साथ चिपके रहें, और जब आवश्यक हो तो केवल विचलित हो जाएं।


There are people that claim to see performance differences: old mailing list thread . But I couldn't find any of them to be confirmed.

The main thing is to look at what kind of quotes (double or single) you are using inside your string. It helps to keep the number of escapes low. For instance when you are working with html inside your strings, it is easier to use single quotes so that you don't have to escape all double quotes around the attributes.


There is strictly no difference, so it is mostly a matter of taste and of what is in the string (or if the JS code itself is in a string), to keep number of escapes low.

The speed difference legend might come from PHP world, where the two quotes have different behavior.


When using CoffeeScript I use double quotes. I agree that you should pick either one and stick to it. CoffeeScript gives you interpolation when using the double quotes.

"This is my #{name}"

ES6 is using back ticks (`) for template strings. Which probably has a good reason, but when coding it can be cumbersome to change the string literals character from quotes or double quotes to back ticks in order to get the interpolation feature. CoffeeScript might not be perfect, but using the same string literals character everywhere (double quotes) and always be able to interpolate is a nice feature.

`This is my ${name}`





conventions