[javascript] JavaScript에서 큰 따옴표 나 작은 따옴표를 사용하는시기

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

문자열을 처리 할 때 작은 따옴표를 사용하여 점점 더 많은 JavaScript 라이브러리를 볼 수 있습니다. 다른 것을 사용하는 이유는 무엇입니까? 나는 그것들이 거의 상호 교환 가능하다고 생각했습니다.



답변

다른 라이브러리에서 싱글 대 더블을 사용하는 가장 큰 이유는 프로그래머 선호도 및 / 또는 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 문자열은 큰 따옴표로 묶어야합니다. 물론 많은 라이브러리가 작은 따옴표도 지원하지만 문자열 중 작은 따옴표가 실제로 JSON 표준에 따르지 않는다는 것을 깨닫기 전에 프로젝트 중 하나에서 큰 문제가있었습니다.


답변

더 나은 해결책은 없습니다 . 그러나 때때로 큰 따옴표가 더 바람직 할 수 있다고 주장하고 싶습니다.

  • 신규 이민자들은 이미 그들의 언어에서 큰 따옴표를 알고있을 것입니다 . 영어에서는 큰 따옴표 "를 사용하여 인용 텍스트의 구절을 식별 해야 합니다. 우리가 작은 따옴표를 사용한다면 '독자는 그것을 따옴표 로 잘못 해석 할 수 있습니다. 로 둘러싸인 텍스트 구절의 다른 의미는 '구어체 의미를 나타냅니다. 기존 언어와 일관성을 유지하는 것이 합리적이므로 코드 학습 및 해석이 쉬워 질 수 있습니다.
  • 큰 따옴표 는 수축과 같이 아포스트로피를 피할 필요가 없습니다 . "I'm going to the mall"이스케이프 된 버전과 비교 하는 문자열 :을 고려하십시오 'I\'m going to the mall'.
  • 큰 따옴표는 다른 많은 언어의 문자열을 의미합니다 . Java 또는 C와 같은 새로운 언어를 배울 때는 항상 큰 따옴표가 사용됩니다. Ruby, PHP 및 Perl에서 작은 따옴표로 묶인 문자열은 백 슬래시 이스케이프를 나타내지 않으며 큰 따옴표는 지원합니다.

  • JSON 표기법은 큰 따옴표로 작성됩니다.

그럼에도 불구하고 다른 사람들이 언급했듯이 일관성을 유지하는 것이 가장 중요합니다.


답변

사양의 7.8.4 절 은 리터럴 문자열 표기법을 설명합니다. 유일한 차이점은 DoubleStringCharacter는 “SourceCharacter이지만 큰 따옴표는 아닙니다”이고 SingleStringCharacter는 “SourceCharacter이지만 작은 따옴표는 아닙니다”입니다. 따라서 유일한 차이점은 다음과 같이 증명할 수 있습니다.

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

Safari, Chrome, Opera 및 Internet Explorer (IE7 및 IE8에서 테스트)에서 다음을 반환합니다.

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

그러나 Firefox는 약간 다른 결과를 낳습니다.

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

작은 따옴표는 큰 따옴표로 대체되었습니다. (들여 쓰기 공간이 4 개의 공백으로 어떻게 바뀌 었는지 참고하십시오.) 이것은 적어도 하나의 브라우저가 마치 큰 따옴표를 사용하여 모든 것이 작성된 것처럼 JavaScript를 내부적으로 구문 분석한다는 인상을줍니다. 모든 것이 이미이 ‘표준’에 따라 작성된 경우 JavaScript가 JavaScript를 구문 분석하는 데 시간이 덜 걸립니다.

그건 그렇고, 작은 따옴표는 코드에서 훨씬 멋지게 보이기 때문에 나를 매우 슬픈 팬더로 만듭니다. 또한 다른 프로그래밍 언어에서는 일반적으로 큰 따옴표보다 사용 속도가 빠르므로 JavaScript에 동일하게 적용되는 경우에만 의미가 있습니다.

결론 : 이에 대해 더 많은 연구가 필요하다고 생각합니다.

편집 : 이것은 2003 년 Peter-Paul Koch의 테스트 결과 를 설명 할 수 있습니다 .

작은 따옴표는 것 같다 때로는 빠른 탐색기 윈도우에서 (내 시험의 약 3 분의 빠른 응답 시간을 표시했다)하지만, 전혀 경우 모질라 쇼 차이, 그것은 약간 빠른 따옴표를 처리합니다. Opera에서는 전혀 차이가 없었습니다.

2014 편집 : Firefox / Spidermonkey의 최신 버전은 더 이상이 작업을 수행하지 않습니다.


답변

인라인 JavaScript를 사용하는 경우 (아마 “나쁜”일이지만 토론을 피하는 경우) single 따옴표는 문자열 리터럴에 대한 유일한 옵션입니다.

예를 들어, 이것은 잘 작동합니다.

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

그러나 내가 알고있는 탈출 방법을 통해 “hi”를 큰 따옴표로 묶을 수는 없습니다. 에도 &quot;(당신은 HTML의 속성 값에 따옴표를 탈출하고 이후) 파이어 폭스에서 저를 위해 일하고 나의 추측하지 않습니다되었을 것이다. \"이 시점에서 JavaScript가 아닌 HTML을 탈출하기 때문에 작동하지 않습니다.

따라서 게임 이름이 일관성 있고 앱의 일부에서 인라인 JavaScript를 사용하려는 경우 작은 따옴표가 승자라고 생각합니다. 내가 틀렸다면 누군가 나를 수정하십시오.