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”를 큰 따옴표로 묶을 수는 없습니다. 에도 "
(당신은 HTML의 속성 값에 따옴표를 탈출하고 이후) 파이어 폭스에서 저를 위해 일하고 나의 추측하지 않습니다되었을 것이다. \"
이 시점에서 JavaScript가 아닌 HTML을 탈출하기 때문에 작동하지 않습니다.
따라서 게임 이름이 일관성 있고 앱의 일부에서 인라인 JavaScript를 사용하려는 경우 작은 따옴표가 승자라고 생각합니다. 내가 틀렸다면 누군가 나를 수정하십시오.