簡體   English   中英

單引號而不是雙引號?

[英]Single Quotes Instead of Double Quotes?

由於HTML和ASP.NET和PHP等語言在使用屬性或字符串時都可以接受,為什么有些人會互換使用單引號和雙引號?

我的理解是,在可能的情況下使用雙引號在語法上是正確的,單個時需要為內聯邏輯嵌入雙引號。

有什么我想念的嗎?

舉些例子:

HTML

<a href='http://google.com'>Google</a>

PHP

<? echo 'Hello World!'; ?>

ASP.NET

<form id='myForm' runat='server'></form>

從技術上講,在PHP中,單引號更快,因為您不需要解析其中的內容。

編輯:所以雙引號會自動轉換為單引號,但如果你在雙引號字符串中有變量替換,那就是當你獲得性能命中時:

http://www.codeforest.net/php-myth-busters-using-single-quotes-on-string-is-faster-then-double-quotes

無論哪種方式,在陪審團討論這個問題時回答OP的問題,發揮安全(TM)並使用單引號:)

在HTML中,我不認為除了明顯的情況之外,其他任何東西都可以回答“為什么”:當字符串包含雙引號時,單引號字符串更方便,反之亦然。

在PHP中,當您不需要任何特殊插值或轉義字符時,單引號字符串會更方便。

我的個人偏好總是在HTML中使用雙引號,並且總是在PHP中使用單引號,除非我需要插值。 因此,我認為單引號字符串在PHP中是“常量”,而雙引號字符串意味着其他東西正在發生。

<意見>但為什么有些人會異想天開地在兩者之間做出選擇呢? 可能是因為他們沒有紀律,后來也不是很好的程序員。</ opinion>

來自W3C: http//www.w3.org/TR/html4/intro/sgmltut.html

All attribute values [should] be delimited using either double quotation
marks (ASCII decimal 34) or single quotation marks (ASCII decimal 39).

Single quote marks can be included within the attribute value when the
value is delimited by double quote marks, and vice versa.

PHP中的字符串遵循相同的原則 - 可互換的單/雙引號。

我想說的是,對於大多數人來說,單引號和雙引號在不真正理解差異的情況下可以互換使用和使用。

兩者都用於創建/描述字符串。

'Hello'

"Hello"

兩者都是字符串,在這種情況下使用時都是相同的。

處理上的差異。 從技術上講,單引號字符串在創建並存儲到內存時不會被處理。 它們按原樣拍攝並制成弦。

雙引號字符串在創建時會被處理並存儲到內存中。 這就是為什么你可以把一個變量放到一個雙引號字符串中它的值將被放入,但是在一個帶引號的字符串中放入了文字變量。對於大多數情況,如果你唱一個或者一個或者沒有真正的區別。雙引號,除了用變量,函數調用等創建字符串以及在處理中保存幾毫秒時。

基本上,選擇是你的。 但為了便於閱讀和維護,請選擇一種形式並堅持下去。

當我將html嵌入到字符串中時,我發現使用單引號是有利的,主要是在處理模板時。 這是一個例子:

public string EmailTemplate = 
@"<div style='color:red'>HEY {0}! BUY MORE STUFF</div>"

// later in code

instanceOfStringBuilder.AppendFormat(EmailTemplate, firstNameVariable); 

對於單引號或雙引號是否“更好”,我的腦海中沒有任何層次結構。 這純粹是一致的問題,並且具有以編程方式工作的東西。

我同意@stillstanding關於HTML中的可互換性問題。 但是,在PHP中,我在需要解析的字符串中的變量的實例中使用雙引號。 考慮一下:

<?php
    $id = 123;
    echo "Your id is $id<br />";
    echo 'Your id is $id';
?>

這將輸出

你的身份證是123

你的身份證是$ id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM