عند استخدام مزدوج أو علامات الاقتباس المفردة في جافا سكريبت ؟

StackOverflow https://stackoverflow.com/questions/242813

  •  04-07-2019
  •  | 
  •  

سؤال

console.log("double"); مقابل console.log('single');

أرى المزيد والمزيد من مكتبات جافا سكريبت هناك استخدام علامات الاقتباس المفردة عند التعامل مع السلاسل.ما هي أسباب استخدام واحد على الآخر ؟ اعتقد انهم الى حد كبير للتبادل.

هل كانت مفيدة؟

المحلول

السبب الأكثر احتمالا لاستخدام واحد مقابل مزدوج في المكتبات المختلفة هو مبرمج تفضيل و/أو API الاتساق.

عدا كونها متسقة استخدام أيهما يناسب السلسلة:.

باستخدام نوع آخر من الاقتباس الحرفي:

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

لكن هذا يمكن الحصول على معقد...

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

خيار آخر, الجديد في ES6 ، قالب حرفية التي تستخدم back-tick حرف:

alert(`Use "double" and 'single' quotes in the same string`);
alert(`Escape the \` back-tick character and the \${ dollar-brace sequence in a string`);

قالب حرفية نقدم نظيفة جملة:متغير الاستيفاء ، متعدد الخطوط سلاسل, وأكثر من ذلك.

نصائح أخرى

إذا كنت تتعامل مع JSON، تجدر الإشارة إلى أن بالمعنى الدقيق للكلمة، سلاسل JSON يجب نقلت مزدوجة. من المؤكد أن العديد من المكتبات تدعم علامات الاقتباس المفردة كذلك، ولكن كان لي مشاكل كبيرة في واحدة من مشاريعي قبل أن يدركوا أن نقلا عن احد سلسلة هو في الواقع ليس وفقا لمعايير JSON.

لا يوجد أحد أفضل حل;ومع ذلك أود القول بأن علامات الاقتباس المزدوجة قد تكون أكثر من المرغوب فيه في بعض الأحيان:

  • القادمين الجدد سوف يكون بالفعل على دراية مع علامات الاقتباس المزدوجة من لغتهم.في اللغة الإنجليزية ، يجب استخدام علامات الاقتباس المزدوجة " لتحديد فقرة من النص المقتبس.إذا كان لنا أن استخدام اقتبس واحدة ', فإن القارئ قد تسيء أنها الانكماش.معنى آخر فقرة من النص وتحيط بها ' يشير إلى 'العامية' معنى.فمن المنطقي أن يبقى متسقا مع ما قبل-القائمة اللغات ، وهذا قد يرجح أن سهولة التعلم وتفسير التعليمات البرمجية.
  • التنصيص على القضاء على الحاجة إلى الهروب apostrophes (كما في تقلصات).النظر في السلسلة: "I'm going to the mall", مقابلوإلا هرب الإصدار: 'I\'m going to the mall'.
  • التنصيص يعني سلسلة في العديد من اللغات الأخرى.عندما تتعلم لغة جديدة مثل Java أو C, علامات الاقتباس المزدوجة تستخدم دائما.في روبي ، PHP و Perl, نقلت واحدة السلاسل يعني أي مائل يهرب حين التنصيص الدعم لهم.

  • سلمان التدوين هو مكتوب مع علامات الاقتباس المزدوجة.

ومع ذلك ، كما الآخرين وقد ذكر هو الأكثر أهمية أن تظل متسقة.

على فقط الفرق هو موضح في التالي:

'A string that\'s single quoted'

"A string that's double quoted"

هكذا, انها فقط إلى كم اقتباس الهروب تريد القيام به.ومن الواضح أن الأمر نفسه ينطبق على علامات اقتباس مزدوجة مزدوجة السلاسل بين علامات الاقتباس.

ونقلت واحدة

أتمنى التنصيص كانت القياسية ، لأنها جعل أكثر قليلا معنى, لكني الاستمرار في استخدام علامات الاقتباس المفردة لأنها تهيمن على المشهد.

ونقلت واحدة:

لا تفضيل:

علامات الاقتباس المزدوجة:

أود أن أقول الفرق هو محض الأسلوبية ، ولكن أنا حقا وجود شكوكي.النظر في المثال التالي:

/*
   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);

في سفاري, كروم, دار الأوبرا, Internet Explorer (اختبار في IE7 و IE8) ، وهذا سيعود التالية:

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

ومع ذلك, فايرفوكس سوف تسفر عن نتيجة مختلفة قليلا:

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

واحد يقتبس تم استبدال علامات الاقتباس المزدوجة.(لاحظ أيضا كيف الطعج الفضاء تم استبدال أربعة مسافات.) وهذا يعطي الانطباع أن ما لا يقل عن متصفح واحد يوزع جافا سكريبت داخليا كما لو كان كل شيء مكتوب باستخدام علامات الاقتباس المزدوجة. قد يعتقد المرء أنه يأخذ فايرفوكس أقل من الوقت لتحليل جافا سكريبت إذا كان كل شيء هو مكتوب بالفعل وفقا لهذه 'معيار'.

والتي بالمناسبة يجعلني حزينة جدا الباندا ، حيث أعتقد أن علامات الاقتباس المفردة تبدو أجمل بكثير في التعليمات البرمجية.بالإضافة, في لغات البرمجة الأخرى, انهم عادة ما تكون أسرع من استخدام علامات الاقتباس المزدوجة ، لذلك معنى إلا إذا كان نفس تطبيق جافا سكريبت.

الخلاصة: أعتقد أننا بحاجة إلى القيام بالمزيد من البحوث حول هذا.

تحرير: هذا قد يفسر بيتر بول كوخ نتائج الاختبار من مرة في 2003.

يبدو أن علامات الاقتباس المفردة هي في بعض الأحيان أسرع في مستكشف ويندوز (ما يقرب من 1/3 من بلدي التجارب لم تظهر استجابة أسرع وقت) ، ولكن إذا موزيلا يظهر الفرق في كل شيء ، مقابض مزدوجة ونقلت أسرع قليلا.لم أجد أي فرق على الإطلاق في الأوبرا.

تحرير 2014: الإصدارات الحديثة من فايرفوكس/وspidermonkey لا تفعل هذا بعد الآن.

إذا كنت تفعل مضمنة جافا سكريبت (يمكن القول إن "سيئة" شيء ولكن تجنب تلك المناقشة) واحد ونقلت الخيار الوحيد الخاص بك عن سلسلة حرفية ، على ما أعتقد.

مثل هذا يعمل بشكل جيد:

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

ولكن لا يمكنك التفاف "مرحبا" في التنصيص عبر أي طريقة الهروب أنا على علم.حتى &quot; الذي كان أفضل تخمين (منذ كنت الهروب ونقلت في قيمة سمة HTML) لا يعمل بالنسبة لي في فايرفوكس. \" سواء في هذه المرحلة كنت الهروب HTML, لا جافا سكريبت.

لذلك ، إذا كان اسم اللعبة هو الاتساق و أنت ذاهب إلى القيام به بعض جافا سكريبت المضمنة في أجزاء من التطبيق الخاص بك ، أعتقد علامات الاقتباس المفردة هي الفائز.شخص ما يرجى تصحيح لي إذا كنت مخطئا على الرغم من.

وتقنيا ليس هناك فرق، انها مسألة الوحيدة من حيث الأسلوب والاتفاقية.

ودوغلاس كروكفورد توصي باستخدام علامات الاقتباس المفردة سلاسل الداخلية والتنصيص للخارجية (من قبل الخارجية نعني تلك التي سيتم عرضها للمستخدم التطبيق، مثل الرسائل أو التنبيهات).

وأنا شخصيا اتبع ذلك.

UPDATE: يبدو أن السيد كروكفورد تغير عقله و توصي الآن استخدام علامات الاقتباس المزدوجة من خلال:)

بالمعنى الدقيق للكلمة, لا يوجد فرق في المعنى ؛ حتى يأتي الاختيار إلى الراحة.

هنا العديد من العوامل التي يمكن أن تؤثر كويس الخاص بك:

  • نمط البيت:بعض مجموعات من المطورين بالفعل استخدام اتفاقية واحدة أو أخرى.
  • العميل المتطلبات:سوف تكون باستخدام علامات الاقتباس في السلاسل ؟ (انظر آدي الجواب).
  • من جانب الخادم اللغة:VB.Net الناس قد تختار استخدام علامات الاقتباس المفردة عن جافا سكربت بحيث النصوص يمكن أن يبنى من جانب الخادم (VB.Net يستخدم المزدوج ونقلت عن سلاسل, حتى java-script سلاسل من السهل تمييزها إذا كانت تستخدم علامات الاقتباس المفردة).
  • مكتبة التعليمات البرمجية:إذا كنت تستخدم المكتبة التي تستخدم نمط معين ، قد تنظر في استخدام نفس الاسلوب نفسك.
  • تفضيل شخصي:ربما شيء واحد أو نمط آخر تبدو أفضل.

ودعونا ننظر ماذا تفعل هذه الإشارة.

وداخل jquery.js، كل سلسلة قابلة للنقل المزدوج.

وهكذا، بدأت الآن، سوف تستخدم السلاسل بين علامات الاقتباس المزدوجة. (كنت تستخدم واحد!)

انها في الغالب مسألة أسلوب تفضيل.هناك بعض للاهتمام ومفيدة التقنية الاستكشافات في إجابات أخرى, لذلك ربما الشيء الوحيد الذي أود أن أضيف أن نقدم القليل الدنيوية المشورة.

  • إذا أنت الترميز في شركة أو فريق ، ثم أنها على الأرجح فكرة جيدة اتبع "دار الطراز".

  • إذا أنت وحدك القرصنة جانب عدد قليل من المشاريع ، ثم ننظر في عدد قليل من القادة البارزين في المجتمع .على سبيل المثال لنفترض أنك الدخول في Node.js.نلقي نظرة على الوحدات الأساسية, على سبيل المثال underscore.js أو التعبير عن رؤية ما الاتفاقية التي يستخدمونها ، والنظر بعد ذلك.

  • إذا كل الاتفاقيات على قدم المساواة تستخدم ، ثم تأجيل الشخصية الخاصة بك
    تفضيل.

  • إذا لا يوجد لديك تفضيل شخصي ، ثم الوجه لعملة واحدة.

  • إذا لا يجب عمله ، ثم البيرة على حسابي ;)

وأرجو أن أكون أنا لا تضيف شيئا واضحا، ولكن لقد كنت تناضل مع جانغو اياكس و JSON في هذا الشأن.

وإذا افترضنا أن في التعليمات البرمجية HTML الخاص بك كنت لا تستخدم علامات الاقتباس المزدوجة، وعادة ما ينبغي أن يكون، وأقترح للغاية لاستخدام علامات الاقتباس المفردة لبقية في جافا سكريبت.

وهكذا وأنا أتفق مع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>'

ويمكنك بقعة \ 'في الحقل الثالث من showThis.

والاقتباس مزدوج لم تنجح!

من الواضح لماذا، ولكن من الواضح أيضا لماذا ينبغي لنا أن نتمسك على علامات الاقتباس المفردة ... .. اعتقد ..

وهذه الحالة هي تضمين HTML بسيط جدا، تم إنشاؤها الخطأ بواسطة نسخة بسيطة / لصق من "نقلت ضعف 'شفرة جافا سكريبت.

ومن أجل الإجابة على السؤال التالي:

وحاول استخدام علامات الاقتباس المفردة في حين ضمن HTML. قد حفظ بضع قضايا التصحيح ...

فقط الحفاظ على التناسق في ما كنت تستخدم.ولكن لا تدع أسفل مستوى الراحة الخاصة بك.

"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

ولست متأكدا إذا كان هذا هو ذات الصلة في عالم اليوم، ولكن علامات الاقتباس المزدوجة تستخدم لاستخدامها للمحتوى الذي بحاجة إلى أحرف التحكم معالجتها ونقلت واحدة لالسلاسل التي لم تفعل ذلك.

والمترجم سيتم تشغيل سلسلة التلاعب على سلسلة مقتبسة مزدوجة مع ترك سلسلة واحدة نقلت يمسها حرفيا. يستخدم هذا أن يؤدي إلى المطورين "جيد" اختيار لاستخدام علامات الاقتباس المفردة عن السلاسل التي لا تحتوي على أحرف التحكم مثل \n أو \0 (وليس معالجتها في غضون علامات الاقتباس المفردة) وعلامات الاقتباس المزدوجة عندما يحتاجون سلسلة تحليل (بتكلفة طفيفة في وحدة المعالجة المركزية دورات لمعالجة سلسلة).

إذا كنت تستخدم jshint ، فإنه سيتم رفع خطأ إذا كنت تستخدم سلسلة اقتباس مزدوجة.

واعتدت عليه من خلال scafflholding الفلاح من AngularJS ولكن ربما هناك بطريقة أو بأخرى maner لتكوين هذا.

وبالمناسبة، عند التعامل مع HTML إلى تفعيل جافا، فإنه من السهل أن استخدام الاقتباس واحد:

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

وعلى الأقل JSON واستخدام علامات الاقتباس المزدوجة لreprensent السلاسل.

ولا توجد وسيلة تافهة للرد على سؤالك

والحديث عن الأداء، ونقلت لن يكون عنق الزجاجة، ومع ذلك، فإن الأداء هو نفسه في الحالتين.

والحديث عن الترميز السرعة، إذا كنت تستخدم ' لترسيم سلسلة، سوف تحتاج إلى الهروب نقلت ". كنت أكثر من المرجح أن تحتاج إلى استخدام " داخل سلسلة، في سبيل المثال:

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

وبعد ذلك، أنا أفضل أن استخدام ' أجل تحديد السلسلة، لذلك لا بد لي من الهروب أقل حرفا.

واحد (سخيفة) سبب استخدام علامات الاقتباس المفردة سيكون ذلك أنها لا تتطلب منك أن ضرب على مفتاح التحول إلى نوع منهم ، بينما اقتباس مزدوجة القيام به.(أنا على افتراض أن متوسط سلسلة لا تتطلب الهروب ، وهو افتراض معقول.) الآن, دعونا نفترض كل يوم أنا رمز 200 أسطر من التعليمات البرمجية.ربما في تلك 200 خطوط لدي 30 الاقتباس.ربما كتابة اقتباس مزدوجة يأخذ 0.1 ثانية المزيد من الوقت من كتابة اقتباس مفردة (لأنني يجب أن تضغط على مفتاح shift).ثم في أي يوم من الأيام, وأنا النفايات 3 ثوان.إذا كنت البرمجية في هذه الطريقة لمدة 200 يوما في السنة لمدة 40 عاما ، ثم أهدرت 6.7 ساعات من حياتي.غذاء للفكر.

دراسة إيجابيات وسلبيات

في صالح من علامات الاقتباس المفردة

  • أقل فوضى بصرية.
  • توليد HTML:سمات HTML عادة ما تكون محددة بواسطة علامات الاقتباس المزدوجة.

elem.innerHTML = '<a href="' + url + '">Hello</a>';
ومع ذلك, علامات الاقتباس المفردة هي مجرد القانونية في HTML.

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

وعلاوة على ذلك, HTML المضمنة عادة مضاد نمط.تفضل قوالب.

  • توليد سلمان:فقط التنصيص يسمح في JSON.

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

مرة أخرى, يجب أن لا يكون لديك لبناء سلمان بهذه الطريقة.JSON.stringify() هو في كثير من الأحيان بما فيه الكفاية.إن لم يكن, استخدام القوالب.

في صالح من علامات الاقتباس المزدوجة

  • الزوجي هي أسهل على الفور إذا لم يكن لديك لون الترميز.مثل في وحدة تسجيل أو نوع من عرض المصدر الإعداد.
  • تشابه إلى اللغات الأخرى:في شل البرمجة (باش الخ) ، واحد-نقلا عن سلسلة حرفية موجودة ، ولكن يهرب لا تفسر داخلها.C و Java استخدام علامات الاقتباس المزدوجة سلاسل و علامات الاقتباس المفردة على الحروف.
  • إذا كنت تريد مدونة صالحة سلمان, تحتاج إلى استخدام علامات الاقتباس المزدوجة.

لصالح كل من

لا يوجد فرق بين الاثنين في جافا سكريبت.ولذلك يمكنك استخدام كل ما هو مناسب في الوقت الراهن.على سبيل المثال ، في أعقاب سلسلة حرفية جميع تنتج نفس السلسلة:

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

علامات الاقتباس المفردة الداخلية سلاسل مزدوجة الخارجية.التي تسمح لك لتمييز الداخلية الثوابت من السلاسل التي يتم عرضها للمستخدم (أو كتابتها إلى القرص.... الخ).ومن الواضح أن عليك أن تجنب وضع هذا الأخير في التعليمات البرمجية الخاصة بك, ولكن لا يمكن أن يكون دائما القيام به.

وأكثر شيء واحد التي قد ترغب في النظر في كسبب للتحول من التنصيص على علامات الاقتباس المفردة هي زيادة في شعبية البرامج النصية جانب الخادم. عند استخدام PHP يمكنك تمرير المتغيرات وتحليل جافا سكريبت الوظائف باستخدام سلاسل والمتغيرات في PHP.

إذا قمت بكتابة سلسلة واستخدام علامات الاقتباس المزدوجة لPHP الخاص بك وسوف لا يكون لديك للهروب أي من علامات الاقتباس المفردة وسوف PHP استرداد تلقائيا قيمة المتغيرات بالنسبة لك.

وعلى سبيل المثال: أنا بحاجة لتشغيل وظيفة جافا سكريبت باستخدام متغير من خدمة بلدي

.
public static function redirectPage( $pageLocation )
{
    echo "<script type='text/javascript'>window.location = '$pageLocation';</script>";
}

وهذا يوفر لي الكثير من المتاعب في الاضطرار إلى التعامل مع سلاسل الانضمام، ويمكن أن أدعو على نحو فعال جافا سكريبت من PHP. هذا مثال واحد فقط، ولكن هذا قد يكون واحدا من عدة أسباب لماذا المبرمجين وتعثر على علامات الاقتباس المفردة في جافا سكريبت.

اقتباس من الوثائق PHP : "الميزة الأكثر أهمية من السلاسل بين علامات الاقتباس المزدوجة هو حقيقة أن أسماء المتغيرات سيتم توسيع انظر سلسلة تحليل للحصول على التفاصيل."

وأود أن استخدام علامات الاقتباس المزدوجة عندما علامات الاقتباس المفردة لا يمكن استخدام والعكس بالعكس:

"'" + singleQuotedValue + "'"
'"' + doubleQuotedValue + '"'

وبدلا من:

'\'' + singleQuotedValue + '\''
"\"" + doubleQuotedValue + "\""

وليس هناك فرق بين علامات الاقتباس المفردة والمزدوجة في جافا سكريبت.

والمواصفات مهم:

وربما هناك بيانات الاختلاف الأداء، لكنها الحد الأدنى للغاية ويمكن أن تتغير كل يوم وفقا لتنفيذ برامج التصفح. مزيد من النقاش غير مجدية ما لم تطبيق جافا سكريبت غير مئات الآلاف منذ فترة طويلة.

وانها مثل معيارا إذا

a=b;

وأسرع من

a = b;

و(مسافات إضافية)

واليوم، في متصفح معين، ومنصة، وما إلى ذلك.

عند استخدام CoffeeScript يمكنني استخدام علامات الاقتباس المزدوجة. وأنا أتفق أنه يجب عليك اختيار إما واحدة والتشبث به. CoffeeScript يمنحك الاستيفاء عند استخدام علامات الاقتباس المزدوجة.

"This is my #{name}"

وES6 تستخدم يعود القراد ( `) سلاسل القالب. والتي ربما لديها سبب وجيه، ولكن عندما الترميز يمكن أن تكون مرهقة لتغيير طابع الحرفية سلسلة من يقتبس أو علامات الاقتباس المزدوجة لدعم القراد من أجل الحصول على ميزة الاستيفاء. CoffeeScript قد لا يكون مثاليا، ولكن باستخدام نفس الحرف سلسلة حرفية في كل مكان (التنصيص) ودائما تكون قادرة على دس هي ميزة لطيفة.

`This is my ${name}`

وهناك أناس يدعون أن نرى الاختلافات الأداء: بريدية قديمة موضوع قائمة . ولكن لم أستطع العثور على أي منها إلى تأكيد.

والشيء الرئيسي هو أن ننظر إلى أي نوع من يقتبس (مزدوجة أو واحد) الذي تستخدمه داخل سلسلة الخاص بك. فهو يساعد على إبقاء عدد من هروب منخفضة. على سبيل المثال عندما كنت تعمل مع أتش تي أم أل داخل سلاسل الخاص بك، فمن السهل أن استخدام علامات الاقتباس واحدة بحيث لم يكن لديك للنجاة من جميع علامات اقتباس مزدوجة حول السمات.

إذا كنت يقفز مرة أخرى إلى إيابا بين جافا سكريبت وC #، فمن الأفضل لتدريب أصابعك للاتفاقية المشتركة التي هي علامات اقتباس مزدوجة.

ولقد تم تشغيل ما يلي حوالي 20 مرة. ويبدو أن علامات الاقتباس المزدوجة هي حوالي 20٪ أسرع.

والجزء الممتع هو، إذا قمت بتغيير جزء 2 وجزء 1 حولها، وعلامات الاقتباس المفردة هي حوالي 20٪ أسرع.

//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));

وبعد قراءة كل الأجوبة التي تقول أنه ربما يكون أسرع أو ربما يكون من المزايا، وأود أن أقول اقتباس مزدوجة هو أفضل أو ربما أسرع من اللازم لأن <لأ href = "http://closure-compiler.appspot.com/home" يختلط = "نوفولو"> جوجل إغلاق مترجم تحويل علامات الاقتباس المفردة إلى التنصيص.

وهناك بدقة لا فرق، لذلك هو في الغالب مسألة ذوق وما في السلسلة (أو إذا كان رمز JS نفسه في سلسلة)، للحفاظ على عدد من هروب منخفضة.

والفرق سرعة أسطورة قد تأتي من PHP العالم، حيث لديها نقلت اثنين من سلوك مختلف.

وإذا كان مصدر JS الخاص بك هو:

elem.innerHTML="<img src='smily' alt='It\'s a Smily' style='width:50px'>";

المصدر HTML سيكون:

<img src="smiley" alt="It's a Smiley" style="width:50px">

وأو HTML5

<img src=smiley alt="It's a Smiley" style=width:50px>

وJS يسمح صفائف من هذا القبيل:

var arr=['this','that'];

ولكن إذا كنت stringify ذلك، فإنه سيكون لسبب بانسجام:

JSON=["this","that"]

وأنا متأكد من هذا يستغرق بعض الوقت.

وفقط لإضافة بلدي 2 سنتا: في العمل مع كل من JS و PHP قبل بضع سنوات، لقد أصبحت تعويد لاستخدام علامات الاقتباس المفردة حتى أستطيع أن اكتب حرف الهروب ( '\') دون الحاجة إلى الخروج منه، وكذلك . وعادة ما تستخدم عند كتابة السلاسل الخام مع مسارات الملفات، الخ ( HTTP: //en.wikipedia. غزاله / ويكي / String_literal # Raw_strings )

وعلى أية حال، انتهت اتفاقية بلدي حتى يصبح استخدام علامات الاقتباس المفردة على معرف من نوع سلاسل الخام، مثل if (typeof s == 'string') ... (الذي هرب من شأنه أن الأحرف ألا تستخدم أبدا - من أي وقت مضى)، والتنصيص ل <م> النصوص ، مثل "مهلا، ما الأمر؟". أنا أيضا استخدام علامات الاقتباس المفردة في تصريحات كاتفاقية مطبعية لإظهار أسماء المعرف. هذا هو مجرد بحكم التجربة، وأنا بقطع فقط عند الحاجة، مثل عند كتابة السلاسل HTML '<a href="#"> like so <a>' (وإن كنت قد عكس علامات الاقتباس هنا أيضا). أنا على علم أيضا أنه في حالة JSON، يتم استخدام علامات الاقتباس المزدوجة لأسماء - ولكن خارج هذا، شخصيا، لكنني أفضل علامات الاقتباس المفردة عند الهروب و<م> لا اللازمة لالنص بين علامات الاقتباس - مثل document.createElement('div')

وخلاصة القول، وكما ذكر بعض / ألمح إلى، واختيار الاتفاقية، والعصا معه ويخرج إلا عند الضرورة.

ويمكنك استخدام علامات الاقتباس المفردة أو علامات اقتباس مزدوجة. وهذا يتيح لك مثلا بسهولة عش جافا سكريبت سمات داخل HTML، دون الحاجة إلى الهروب من العملات. ونفس الشيء عند إنشاء جافا سكريبت مع PHP.

والفكرة العامة هي: إذا كان استخدام الممكنة مثل هذه الاقتباسات أنك لن تحتاج للهروب. أقل الهروب = أفضل التعليمات البرمجية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top