구분 기호 인 쉼표와 구분 기호 인 쉼표


13

에서 이 비디오 , 스피커는 말한다 :

"어떤 사람들은 쉼표의 작동 방식에 대해 혼란스러워합니다. 그들은 구분 기호가 아닌 구분 기호 여야한다고 생각합니다. 이제는 어느 쪽이든 생각할 수 있습니다."

구분 기호와 구분 기호의 차이를 이해하지 못합니다 (있는 경우). 비디오의 의미는 이제 (마지막 쉼표가 유효 함) 구분 기호가 아닌 구분 기호로 생각할 수 있다는 것입니다.

문제의 언어는 JavaScript입니다. 내 이해에서 쉼표 토큰에는 두 가지 의미가 있습니다.

  • 운영자로서 (드물게 사용됨)
  • 구분 기호로서 (인수 및 매개 변수 목록, 배열 및 객체 리터럴 등)

쉼표 구분 기호가 어떻게 적용되는지 잘 모르겠습니다 ...


2
이것이 왜 중요한가?
jfriend00

7
@ jfriend00 구분자와 구분 기호 사이에 차이가 있다면 알고 싶습니다. 나는 물건을 알고 싶습니다:)
Šime Vidas

3
@ jfriend00 비디오를보십시오. IE 사람들이 당신만큼 좁게 생각하지 않았다면, 아마도 우리는 또 다른 자바 스크립트 이식성
스나 후를 가지지 않았을 것입니다

3
@ ŠimeVidas 좋은 질문입니다. BTW의 연설자는 Yahoo의 선임 JavaScript 아키텍트 인 Douglas Crockford이며 JSON의 대중화 및 JavaScript : The Good Parts로 유명합니다 . 특히 Crockford 비디오를 볼 때 중요하지 않은 것들에 대한 호흡을 거의 낭비하지 않으므로 세부 사항에주의를 기울이는 것이 좋습니다.
yannis

1
@YannisRizos Yea, 나는 Crockford를 안다. 그는 훌륭한 교육자입니다. :)
Šime Vidas

답변:


15

쉼표를 구분 기호로 간주하는 경우 시퀀스의 두 항목 사이에 쉼표를 사용하여 구분하고 구분 기호로 간주하면 각 항목 뒤에 쉼표를 사용하여 항목이 끝나는 위치를 나타냅니다. 아래 예를 참조하십시오.

구분 기호로 쉼표

var myCars = ["Saab", "Volvo", "BMW" ];

분리 문자로서의 쉼표

var myCars = ["Saab", "Volvo", "BMW", ];

비디오는 위의 두 배열 예제가 모두 유효하기 때문에 쉼표를 구분 기호와 구분 기호로 생각할 수 있다고 말합니다. 반면에 자바 스크립트에서는 함수의 매개 변수 목록에서 구분 기호로 쉼표 만 사용할 수 있습니다 (예 :

foo(a, b, c) // separator, OK

유효하지만

foo(a, b, c,) // delimiter, NOT OK!

유효하지 않습니다.

편집하다

내가 이해하는 한, 위키 백과 페이지에 따르면 구분 기호구분 기호 의 특별한 경우 , 즉 경계를 표시 해야하는 다른 텍스트 영역 사이 에있는 구분 기호 입니다. 실제로 위키 백과 페이지 에는 구분 기호의 예로 쉼표로 구분 된 값이 있습니다. 따라서 일반적으로 구분 기호를 표시 할 텍스트 부분의 양쪽에 서로 다른 방식으로 사용할 수 있습니다.

Javascript 컨텍스트에서 구분 기호 를 "항목 뒤에 놓인 마커"로 해석 한 이유 는 C, C ++ 및 Java에도 유효한 배열 리터럴 예제에 의해 동기 부여되었습니다. 이 주제와 관련된 스택 오버플로).

문자를 유사하지만 다르게 사용하는 또 다른 예는 세미콜론을 명령문 구분 기호 (C, C ++, Java, Ada 등) 및 명령문 구분 기호 (파스칼)로 사용하는 것입니다. 따라서

if (a > 0)
    printf("Positive\n");
else
    printf("Non positive\n");

올바른 C 코드이지만

IF a > 0 THEN
    WriteLn('Positive'); (* Syntax error here! *)
ELSE
    WriteLn('Non positive');

올바른 파스칼 코드가 아닙니다.

어쩌면 터미네이터구분 기호 보다 더 좋고 덜 모호한 용어 일까요? 예를 들어 "일부 사람들은 쉼표의 작동 방식에 대해 혼란스러워합니다. 이들은 항목 구분 기호 아닌 항목 종결 자 여야한다고 생각합니다 . 이제는 많은 경우에 대해 생각할 수 있습니다."


예, 매개 변수 목록에서 쉼표는 구분 기호로 사용해야하는 반면 배열 리터럴에서는 쉼표를 구분 기호 나 구분 기호로 사용할 수 있습니다. 또는 평신도의 용어로 : 마지막 배열 요소 뒤에 쉼표를 넣을 수 있지만 꼭 그럴 필요는 없습니다.
Šime Vidas

귀하의 답변에 내 질문의 인용문이 잘 설명되어 있지만 "구분자"에 대한 Wikipedia 페이지 는 다른 정의를 제공합니다. 이 기사에 따르면 구분 기호 영역 사이 의 경계 지정합니다 . 따라서 위의 질문에서 "분리 자로 쉼표"예제를 쉼표 필드 구분 기호라고하며 "구분 기호로 쉼표"예제는 해당 Wiki 페이지의 어느 곳에도 표시되지 않습니다.
Šime Vidas

@ Šime Vidas-Wikipedia는 다른 참조와 마찬가지로 참조 용일뿐입니다.
마이클 라일리-AKA Gunny

@CapeCodGunny 네, 나는 직면하는 정의가 있음을 지적하고 있습니다. 다른 참고 문헌의 정의도보고 싶습니다.
Šime Vidas

7

구분 기호는 두 값 사이에 배치되어 구분됩니다.

one,two,three

구분 기호는 필드를 구분하며 양쪽에 있습니다.

,one,two,three,

이 방법을 사용하면 별도의 필드를 추출 할 수있는 한 거의 차이가 없습니다.

이것은 자바 스크립트와 같은 프로그래밍 언어에서 쉼표를 사용하는 것과는 완전히 다른 문제입니다. 문자열 내에서 값을 구분 / 분리하는 것입니다.


1
아 그렇습니다.
Šime Vidas

구분자 설명에 동의하지 않습니다. 당신의 설명에 따르면, 그것은 하나, 둘, 셋 일 것입니다. 이제 구분자는 양쪽에 있습니다.
마이클 라일리-일명 Gunny

1
@CapeCodGunny-잘못 해석하고 있습니다. 내가 준 예제에는 값 전후에 쉼표가 있습니다. 문자열의 맨 처음과 끝에 있지 않은 쉼표는 끝 구분 기호 시작 구분 기호로 사용됩니다.
오디드

@Oded이 위키 백과 기사 는 다른 정의를 제공합니다. 이에 따르면 첫 번째 예제는 필드 구분 기호이고 두 번째 예제는 해당 기사에 전혀 표시되지 않습니다.
Šime Vidas

1
주의의 말씀! var myNumbers = ['one','two','three', ];(끝의 쉼표)는 배열 길이를 3으로 제공하지만 앞의 쉼표로 인해 var myNumbers = [,'one','two','three'];길이는 4를 제공합니다.
RBT
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.