Tekli - Çiftli tırnak ('vs ")


250

HTML'imi elle yazarken her zaman tek tırnak kullandım. Ben her zaman çift tırnak kullanan render HTML bir sürü ile çalışır. Bu, HTML'nin elle yazılmış veya oluşturulup oluşturulmadığını belirlememe olanak tanır. Bu iyi bir fikir mi?

İkisi arasındaki fark nedir? İkisinin de çalıştığını ve tüm modern tarayıcılar tarafından desteklendiğini biliyorum, ancak farklı durumlarda birinin diğerinden daha iyi olduğu gerçek bir fark var mı?



5
El ile yazılan ve üretilen HTML'yi belirleme aracı olarak tekli - çiftli tırnakların kullanılıp kullanılmadığı sorusunu yanıtlamak için hayır, muhtemelen iyi bir fikir değildir. Tutarsız kod (bazı yerlerde tek kullanır, diğerlerinde çift kullanır) muhtemelen elle yazılmış olsa da, eminim birçok kişi (kendim dahil) her yerde çift tırnak kullanır, ancak kodumuz kesinlikle bilgisayar tarafından üretilmez; )
Doktor J

@ Aito'nun cevabı gerçekten doğrudur ve kabul edilmelidir ... Şahsen ben tek anahtar kelimeler / etiketler, URL ve referanslar gibi kısa özellikler için tek tırnak kullanın; aslında insan tarafından okunması amaçlanmayan herhangi bir şey. Daha uzun metinler veya boşluk veya tek tırnak / kesme işareti içeren herhangi bir şey için - içerik olarak çift tırnak kullanırım. Bu sadece tarzınızla ilgili (veya kullandığınız stil rehberi)
cedbeu

1
10 büyük web sitesine göz atın ve bunların çoğunun stackoverflow, youtube / google, wikipedia gibi ne kullandığını görün. Şimdiye kadar tek tırnak kullanılan büyük web siteleri bulmakta sorun yaşıyorum.
Timo Huovinen

Yanıtlar:


391

W3 org dedi ki :

Varsayılan olarak, SGML tüm öznitelik değerlerinin çift tırnak işareti (ASCII ondalık 34) veya tek tırnak işareti (ASCII ondalık 39) kullanılarak sınırlandırılmasını gerektirir. Değer çift tırnak işareti ile sınırlandığında özellik değerine tek tırnak işaretleri eklenebilir veya bunun tersi de geçerlidir. Yazarlar ayrıca çift tırnak işaretlerini ( ") ve tek tırnak işaretlerini ( ) temsil etmek için sayısal karakter referanslarını kullanabilirler '. Çift tırnak için yazarlar karakter varlık referansını da kullanabilirler ".

Yani ... fark yok gibi görünüyor. Sadece tarzınıza bağlıdır.


38
ve tutarlı ('veya "ile) büyük olasılıkla sıkıştırılmış (gzip, deflate) sayfalar
sunmanız

2
@Aito, bu SGML için. HTML için tüm özellik değerlerinin sınırlandırılması gerekmez
Pacerier

4
Ben tek başına çifte olsa öneririz - Neden biri iş yaparken iki kullanın.
Ujjwal Singh

7
@JohnHunt: Sadece 1823 bayt js dosyası (rastgele bir uygulamadan rastgele bir Omurga Modeli) üzerinde hızlı bir test yaptım. Tüm tırnak işaretleri aynıysa (ya 'da ") 809 baytsa gzip çıktısı . Bunları karıştırmak çıktıyı 829 bayta kadar itti. Bu sizin için alakasız olabilir, ancak bu herkes için alakasız olduğu anlamına gelmez.
cherouvim

3
Eğer biri "oh bu çok düşük bir potansiyel, muhtemelen yüz" muhtemelen alakasız "bir şeyle alakasız, bin iğnenin ölümü gerçekleşir. Makul bir çaba içinde, kaydedebileceğiniz her şey IMO'yu kurtarmaya değer.
SÖZLEŞME DOĞRU

67

Kullandığım "bir üst katmanı olarak ve 'çoğu insan bunu hayal gibi bir ikinci katmanı olarak. Örneğin

<a href="#" onclick="alert('Clicked!');">Click Me!</a>

Bu örnekte, her ikisini de kullanmalısınız, kaçınılmaz.


38
Ben de bunu ama html içinde satır içi javascript önlemek eğer önlenebilir.
cherouvim

4
Özel data-*öznitelikler kullanılırken olduğu gibi tek tırnak işaretlerinin gerekli olabileceği satır içi olmayan javascript dışındaki durumlar da vardır . Uygulamanıza ve data-*öznitelikleri nasıl kullandığınıza bağlı olarak, ''s içinde "' ifadesini kullanmanız gerekebilir . Bazen bunları Google Analytics Etkinlik İzleme için kullanırız:<a href="..." data-track="Homepage Banner|Clicked|Dick's Sporting Goods">click me</a>
Jake Wilson

3
Düşününvar x = "<a href='" + url + "'>click me</a>";
NibblyPig

4
Bunun gibi kolayca önlenebilir: <a onclick="alert(\"Clicked!\")">. Ancak, bu daha az okunabilir.
fabspro

2
Ancak bunun resmi olarak SGML ve HTML5 tarafından desteklenip desteklenmediğinden tam olarak emin değilim.
fabspro

26

Web Geliştiricileri için Alıntı Yapma Kuralları

Kısa Cevap

HTML'de tek tırnak işareti (') ve çift tırnak işareti (") birbirinin yerine kullanılabilir, hiçbir fark yoktur.

Ancak tutarlılık önerilir, bu nedenle bir sözdizimi kuralı seçmeli ve düzenli olarak kullanmalıyız.

Uzun Cevap

Web Geliştirme genellikle birçok programlama dilinden oluşur. HTML, JS, CSS, PHP, ASP, RoR, Python, vb. Bu nedenle, farklı programlama dilleri için birçok sözdizim kuralına sahibiz. Çoğu zaman, bir dilden gelen alışkanlıklar, "uygun", yani yorumlama kuralları olarak kabul edilmese bile, bizi diğer dillere kadar takip edecektir. Alıntılardan alıntılar da benim için bu kategoriye giriyor.

Ama ben HTML ile sıkı bir şekilde HTML kullanma eğilimindedir. PHP'de tek tırnak ve çift tırnak arasında büyük bir fark vardır . Çift tırnaklı PHP'de "dizginin metnine doğrudan değişkenler ekleyebilirsiniz". (scriptingok.com) Ve tek tırnak kullanıldığında "metin olduğu gibi görünür". (scriptingok.com)

PHP'nin çift tırnaklı dizeleri işlemesi daha uzun sürer . PHP ayrıştırıcı, içerideki herhangi bir değişkeni algılamak ve birleştirmek için tüm dizeyi önceden okuması gerektiğinden, tek tırnaklı dizeden daha uzun sürebilir. (scriptingok.com)

 

Tek tırnak işaretleri sunucuda daha kolaydır . PHP'nin tüm dizeyi önceden okuması gerekmediğinden, sunucu daha hızlı ve daha mutlu çalışabilir. (scriptingok.com)

Dikkate alınacak diğer şeyler

  1. Dize içinde çift tırnak sıklığı. Dizelerim içinde çift tırnak (") kullanmam gerektiğini, dizeler içinde tek tırnak (') kullanmam gerekenden daha sık buluyorum.Gereken karakter kaçışlarını azaltmak için tek tırnaklı ayırıcıları tercih ediyorum.
  2. Tek bir alıntı yapmak daha kolay. Bu oldukça açıklayıcıdır, ancak açıklığa kavuşturmak için neden SHIFT tuşuna basmanız gerekir.

Sözleşmem

PHP bu anlayış ile dizeleri sunucu optimizasyonu için varsayılan olarak tek tırnak olarak temsil edilecek kural (kendim ve şirketimin geri kalanı için) ayarladım. Bir öznitelik içindeki JavaScript gibi bir tırnak gerekiyorsa, dizede çift tırnak kullanılır, örneğin:

<button onClick='func("param");'>Press Me</button>

Tabii ki PHP'deysek ve ayrıştırıcının dize içindeki PHP değişkenlerini işlemesini istiyorsak, kasten çift tırnak kullanmalıyız. $a='Awesome'; $b = "Not $a";

Kaynaklar

PHP tek tırnak vs Çift tırnak. (nd). 26 Kasım 2014 tarihinde http://www.scriptingok.com/tutorial/Single-quotes-vs-double-quotes-in-PHP adresinden erişildi.


3
PHP'deki tek tırnak ile çift tırnak performans farkı arasındaki fark, bu soruyu cevaplamadan önce sıfır yıl olarak biliniyordu: nikic.github.io/2012/01/09/…
Conor Mancone

1
Dizelerinizdeki tek tırnaklardan daha fazla çift tırnak mı buldunuz? İlginç. Dizelerimde son kez çift alıntı yaptığımı hatırlayamıyorum.
Zonker.in.Geneva

Sürekli. Geçen 10 yıl içinde bir tam yığın geliştirici olarak kendimi tek tırnak daha 10x daha sık bir dize içinde çift tırnak kullanmak gerektiğini bulmak. JavaScript için en yaygın örnek, SADECE çift tırnak ile çalışan öznitelik seçicilerdir, bu yüzden mükemmel document.querySelector("[name^='myname']")çalışırken hiç çalışmaz document.querySelector('[name^="myname"]').
Dustin Poissant

@DustinPoissant WHAAAT ?? Hangi tarayıcıda ??
Bay Lister

14

Her şey aynı ise, shift tuşunu basılı tutmayı gerektirmediğinden belki de tek tırnak kullanmak daha iyidir. Daha az tuş vuruşu == daha az RSI şansı.


2
en azından Galaktik Ortak düzende. (hush-hush)
n611x007

1
RSI riski ve kodlama standartlarıyla tuş vuruşlarının sayısı ne kadardır?
Dib

o kadar çok fikir tek ve çift tırnaklar arasında bir fark olmadığını, sadece tuş vuruşlarının sayısının İKİ faktörüne göre değiştiğini açıklığa kavuşturur. Ve birçok alıntıya ihtiyacımız var. Beynimizdeki çift alıntıların örüntü tanıması için belki de daha fazla nöronun ateşlenmesi gerekeceği önerisini ekleyebilir miyim?
Roland

Fransızca klavyeler için bu doğru değil.
Tokeeen.com

11

HTML'de kullanmanızın önemli olup olmadığına inanmıyorum "veya 'belge boyunca tutarlı bir şekilde kullanılması gerekiyor.

Kendi kullanımım özellikleri / html kullanımını tercih "ederken, tüm javascript 'bunun yerine kullanır .

Bu benim için okumayı ve kontrol etmeyi biraz daha kolaylaştırıyor. Kullanımınız sizin için benimkinden daha mantıklıysa, değişime gerek yoktur. Ancak, bana göre, kodunuz dağınık hissedecekti . Kişisel hepsi bu.


Neden sürekli kullanılmalıdır? Sadece okunabilirlik için mi?
timetofly

Çünkü hataları bu şekilde önlemek daha kolaydır.
David, Monica

2
Sıklıkla özellikleri kullanmak var ", ama diğer zamanlarda ben ayrışmaya izin vermek için echo'kullanım "' s tercih PHP kodu kod yazıyorum . Bu eko içindeki herhangi bir html özniteliği, ''s kullanılırsa daha okunabilir . Elbette tutarlı değil, ancak tüm ters eğik çizgiler olmadan çok daha kolay.
timetofly

3
Sizin için uygun olan her şey yolunda; tutarlı olmak 'her zaman X yap' anlamına gelmez, sadece 'X durumunda bu şekilde yap' anlamına gelir, tutarlılık bağlama duyarlı olabilir; ve en iyi şekilde kullanılır.
David, Monica

9

Aslında, en iyi yol Google'ın önerdiği yöntemdir. Çift tırnak: https://google.github.io/styleguide/htmlcssguide.xml?showone=HTML_Quotation_Marks#HTML_Quotation_Marks

Bkz. Https://google.github.io/styleguide/htmlcssguide.xml?showone=HTML_Validity#HTML_Validity Google'dan Alıntı Öneriler: "Geçerli HTML kullanmak, teknik gereksinimler ve kısıtlamalar hakkında bilgi edinmeye katkıda bulunan ve bunu sağlayan ölçülebilir bir temel kalite özelliğidir doğru HTML kullanımı. "


Stackoverflow dahil şimdiye kadar karşılaştığım web sitelerinin büyük çoğunluğu, çift tırnak kullanın, ben web genelinde tutarlılık daha iyidir, bu yüzden doğru cevap IMHO da "çift tırnak" olduğunu düşünüyorum.
Timo Huovinen

2
Ama neden!? Neden "bitti '! ??
San

2
@San Tutarlılık, çoğunlukla. Amerikan İngilizcesi standardına göre çift tırnak işaretleri tek tırnak ve alt tırnak işaretleri alt tırnak içindir.
Nielsvh

6

Bir sürü insanın aynı fikirde olmadığını biliyorum , ama bunu yapıyorum ve gerçekten böyle bir kodlama stilinin tadını çıkarıyorum: Aslında kesinlikle gerekli olmadıkça HTML'de herhangi bir alıntı kullanmıyorum.

Misal:

<form method=post action=#>
<fieldset>
<legend>Register here: </legend>
  <label for=account>Account: </label>
  <input id=account type=text name=account required><br>
  <label for=password>Password: </label>
  <input id=password type=password name=password required><br>
...

Çift tırnak işaretleri yalnızca özellik değerlerinde boşluk olduğunda veya her neyse kullanılır:

<form class="val1 val2 val3" method=post action=#>
  ...
</form>

1
Arkasında bir sebep var mı? Yoksa sadece "böyle kodlama tarzından gerçekten hoşlanıyorsunuz"?
Bugs Bunny

4
Tırnaklar olmadan HTML çok daha temiz görünüyor (ve dosya boyutu biraz daha küçük). Tek sebep bu ve başka bir şey değil. Ayrıca, her özelliğin tırnak içine alınmasını gerektiren noktayı gerçekten göremiyorum . Sorunu kurtarmak neden sadece göz ardı edilemez? W3.org bile alıntılanmamış nitelik değerlerini kabul eder ( w3.org/TR/html-markup/syntax.html#syntax-attr-unquoted ). Basit, karmaşık olmaktan iyidir. Alıntı yapmak bir tür din midir?
Randy Tang

5
Hayır, farkında olduğum din yok. Ben uzunca bir süredir HTML'de bulundum ve tarzınızın daha önce hiç kullanılmadığını gördüm ...
Bugs Bunny

1
Ayrıca, HTML küçültücüler de gereksiz tırnak işaretlerini kaldırır.
Nimrod

2
Öznitelik değerleri etrafında tırnak bırakmayla ilgili sorun, farklı standartların alıntılanması gereken farklı karakter listelerine sahip olmasıdır. Örneğin, HTML4 yalnızca harflerden, rakamlardan, tire ve noktalardan oluşan değerlerin tırnak içine alınabileceğini söyledi, ancak HTML5 boşluklar ve "'' <=> dışında bir şeylerin gittiğini söylüyor, bu yüzden özellikle eski tarayıcılarda dikkatli olmalısınız!
Bay Lister

5

HTML için çift tırnak kullanma

yani

<div class="colorFont"></div>

JavaScript için tek tırnak kullanma

yani

$('#container').addClass('colorFont');
$('<div class="colorFont2></div>');

2

Nerede çift tırnak kullanarak tek teklif (hangi işe yaramadı) kullanarak vs önemli Bootstrap kullanarak bir sorun oldu. class = 'row-fluid' bana en sağda iyi oturmak yerine son açıklığın diğer açıklıkların altına düşmesine neden olan sorunlar verirken, class = "row-fluid" çalıştı.


1

asp.net yazıyorsanız, zaman zaman Eval deyimlerinde çift tırnak ve değerleri sınırlamak için tek tırnak kullanmak zorundasınız - bu esas olarak C # satır içi kodun bir karakter yerine eval kapsayıcısında bir dize kullandığını bilmesidir. Şahsen ben sadece birini veya diğerini standart olarak kullanır ve karıştırmaz, hepsi dağınık görünüyor.


1

Aşağıdaki durumlarda "yerine" kullanılması:

<input value="user"/> //Standard html
<input value="user's choice"/> //Need to use single quote
<input onclick="alert('hi')"/> //When giving string as parameter for javascript function

Aşağıdaki durumlarda 'yerine' kullanılması:

<input value='"User"'/> //Need to use double quote
var html = "<input name='username'/>" //When assigning html content to a javascript variable

3
"Html içeriği js değişkeni yapmak" durumunda, ben genellikle tam tersini yapmayı tercih ediyorum: var html = '<input name="username" />';ve html geri kalanı ile tutarlılık :)
Erenor Paz

1

Html için bir fark oluşturmaz, ancak başka bir programlama dili ile dinamik olarak html oluşturuyorsanız, bir yol diğerinden daha kolay olabilir.

Örneğin Java'da çift ​​tırnak, bir Dizenin başlangıcını ve sonunu belirtmek için kullanılır, bu nedenle Dizeye bir çift tırnak eklemek istiyorsanız, ters eğik çizgiyle çıkmanız gerekir.

String s = "<a href=\"link\">a Link</a>"

Tek tırnakla böyle bir probleminiz yok, bu nedenle tek tırnakla kullanılması Java'da daha okunabilir kodlar sağlıyor.

String s = "<a href='link'>a Link</a>"

Özellikle birçok özelliğe sahip html öğeleri yazmak zorundaysanız. (Not Java'da html yazmak için genellikle jhtml gibi bir kitaplık kullanıyorum, ancak bunu yapmak her zaman pratik değil)


Servlet üzerinde iki staj yaptım. Kodumu analiz ediyordum ve sadece şimdi çift tırnak, tek tırnak ve dize birleştirme gerçeği fark etmeye başladı. Çalıştığım web sitesi, html'de çift tırnak ve java'da tek tırnak kullanıyordu. Farkında bile değildim. Sevindim sonunda aldım ...
Michael

0

Burada acemi değilim ama sadece ilk tırnak içinde çift tırnak işareti kullandığımda tek tırnak işareti kullanıyorum. Eğer net değilsem size örnek göstereceğim:

<p align="center" title='One quote mark at the beginning so now I can
"cite".'> ... </p>

Umarım yardımcı olmuşumdur.


-5

Değişken isimleri değerlendirildiğinden PHP'de çift tırnak kullanımı performansında hafif bir düşüşe neden olur, bu yüzden pratikte, kod yazarken her zaman tek tırnak kullanırım:

echo "This will print you the value of $this_variable!";
echo 'This will literally say $this_variable with no evaluation.';

Bunun yerine bunu yazabilirsiniz;

echo 'This will show ' . $this_variable . '!';

Javascript'in benzer şekilde çalıştığına inanıyorum, bu yüzden sizin için önemliyse, performansta çok küçük bir gelişme.


Ayrıca, HTML spec 2.0'a kadar bakarsanız, burada listelenen tüm etiketler;

W3 HTML DTD Referansı

(Çift tırnak kullanın.) Hangisini daha sık kullanmaya eğilimli olursanız olun tutarlılık önemlidir.


13
JavaScript, dizelerdeki değişken adlarını değerlendirmez. JavaScript'te 've "arasında hiçbir fark yoktur
John Mellor

-9

Dizeler için çift tırnak kullanılır (yani, "bu bir dizedir") ve bir karakter için tek tırnaklar kullanılır (yani, 'a', 'b' veya 'c'). Programlama diline ve içeriğe bağlı olarak, bir karakter için çift tırnak kullanmak yerine bir dize için tek tırnak kullanmaktan kurtulabilirsiniz.

HTML, hangisini kullandığınızla ilgilenmez. Bununla birlikte, bir PHP betiğinin içine HTML yazıyorsanız, kendinizi ve PHP'yi karıştırmamak için onlardan kaçmanız gerekeceğinden (yani, \ "ne olursa olsun \") çift tırnak işareti kullanmanız gerekir.


Çok az programlama dili biliyorum, ama bunun doğru olduğu bir dil.
mikl

1
Mikl C # ve Java genel uygulama çift tırnak ve tek tırnak içinde karakter dizeleri olduğunu. Ancak bu, bu cevap için bir onay vermez. Farklı bir sorunun cevabı bu olmadığı sürece.
Evorlor
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.