프로그래밍 언어의 어휘 구조는 언어 작성 방법을 설명하는 기본 규칙 집합입니다. 구문의 기초로서 변수 이름이 어떻게 생겼는지, 주석을 어떻게 작성하는지, 명령문을 구별하는 방법을 규정합니다. 이 섹션에서는 매우 짧은 공백을 사용하여 JavaScript의 어휘 구조를 소개합니다.
1. 캐릭터 세트
Javascript 프로그램은 ASCII 및 Latin-1의 상위 집합인 유니코드 문자 집합을 사용하여 작성되며 해당 지역의 거의 모든 언어를 지원합니다. ECMAscript3에서는 javascript 구현이 Unicode2,1 이하 버전을 지원해야 하며, ECMAscript5에서는 Unicode3 이하 버전을 지원해야 합니다
대소문자 구분
Javascript는 대소문자를 구분하는 언어입니다. 즉, 키워드, 변수, 함수 이름 및 모든 표현식 문자는 대문자와 소문자로 일관되어야 합니다. 예를 들어 키워드 while은 While 또는 WHILE이 아닌 while으로 작성해야 합니다.
그러나 html은 대소문자를 구분하지 않는다는 점에 유의해야 합니다(xhtml은 그렇긴 하지만). 클라이언트 측 자바스크립트와 밀접하게 관련되어 있기 때문에 혼동되기 쉽습니다. 예를 들어 HTML에 설정된 처리 이벤트에서는 onclick 속성을 onClick으로 쓸 수 있지만, JavaScript에서는 onclick을 소문자로 씁니다.
ii 공백, 줄 바꿈 및 형식 제어
Javascript는 프로그램에서 토큰 사이의 공백을 무시합니다. 대부분의 경우 JavaScript는 줄바꿈도 무시합니다. 코드 내에서 공백과 줄 바꿈을 자유롭게 사용할 수 있으므로 깔끔하고 일관된 들여쓰기를 사용하여 통일된 코딩 스타일을 형성하고 코드의 가독성을 향상시킬 수 있습니다.
자바스크립트는 공백 문자(u0020)를 추가로 인식합니다. JavaScript는 공백을 표시하는 다음 문자도 나타냅니다. 가로 탭(u0009), 세로 탭(u000B), 폼 피드(u000C), 줄 바꿈 없는 공백(u00A0), 바이트 순서 표시(uFEFF) 및 Zs 범주의 모든 문자 유니코드. JavaScript는 줄 바꿈(u000A), 캐리지 리턴(u000D), 줄 구분 기호(u2028) 및 단락 구분 기호(u2029)와 같은 문자를 종결자로 인식합니다. 캐리지 리턴 문자와 줄 바꿈 문자가 함께 단일 줄 종결자로 구문 분석됩니다.
"오른쪽에서 왼쪽 쓰기 표시"(u200F) 및 "왼쪽에서 오른쪽 쓰기 표시"(u200E)와 같은 유니코드 형식 제어 문자(Cf 클래스)는 텍스트의 시각적 표시를 제어합니다. 이는 영어가 아닌 일부 텍스트를 올바르게 표시하는 데 중요합니다. 이러한 문자는 JavaScript 주석, 문자열 리터럴 및 정규식 리터럴에 사용할 수 있지만 너비가 0인 경우를 제외하고 식별자(예: 변수 이름)에는 사용할 수 없습니다. 커넥터(u200D) 및 너비가 0인 비커넥터(uFEFF)는 식별자에 나타날 수 있지만 식별자로 사용할 수 없는 손 문자입니다. 위에서 언급한 바와 같이 바이트 순서 표시 형식 제어 문자(uFEFF)는 공백으로 처리됩니다
iii.유니코드 이스케이프 시퀀스
일부 컴퓨터 하드웨어 및 소프트웨어에서는 전체 유니코드 문자 집합을 표시하거나 입력할 수 없습니다. 이전 기술을 사용하는 프로그래머를 지원하기 위해 JavaScript는 6개의 ASCII 문자를 사용하여 16비트 유니코드 내부 코드를 나타내는 특수 시퀀스를 정의합니다. 이러한 유니코드 이스케이프 시퀀스에는 u라는 접두사가 붙고 그 뒤에 16진수 마우스(숫자 및 대문자 A-F를 사용하여 표시됨)가 붙습니다. 이 유니코드 이스케이프 작성 방법은 JavaScript 문자열 리터럴, 정규식 및 식별자(키워드 제외)에 사용할 수 있습니다. 예를 들어 문자 é의 유니코드 이스케이프 작성 방법은 u00E9이고 다음 두 Javascript 문자열은 완전히 동일합니다.
"카페" === "cafu00e9" =>
유니코드 이스케이프 쓰기는 주석에 나타날 수 있지만 JavaScript는 주석을 무시하므로 컨텍스트에서는 ASCII 문자로만 처리되고 해당 유니코드 문자가 뒤에 오지 않습니다
iii 표준화
유니코드를 사용하면 여러 방법으로 동일한 문자를 인코딩할 수 있습니다. 예를 들어 문자 é는 유니코드 문자 u00E9를 사용할 수 있거나 일반 ASCII 문자 e 뒤에 억양 표시 u0301을 사용할 수 있습니다. 텍스트 편집기에서 이 두 인코딩으로 표시되는 결과는 완전히 동일하지만 이진 인코딩 표현은 다릅니다. .컴퓨터에서도 마찬가지입니다. 유니코드 표준은 인덱스 문자에 대해 선호되는 코드 형식을 정의하고 텍스트를 비교에 적합한 표준 형식으로 변환하는 표준화된 처리 방법을 제공합니다. 이는 다른 표현, 문자열 또는 정규식을 표준화하지 않습니다.
2. 참고사항
Javascript는 두 가지 주석 방법을 지원합니다. "//" 줄 끝 뒤의 텍스트는 JavaScript에서 주석으로 무시됩니다.
또한 /*와 */ 사이의 텍스트도 주석으로 처리됩니다. 이러한 종류의 주석은 여러 줄에 걸쳐 작성할 수 있지만 중첩된 주석은 있을 수 없습니다.
/*
*
*
*
*/
3. 직접 측정
{x:1,y:2} //객체
[1,2,3,4,5] //배열
4. 식별자 및 예약어
식별자는 이름입니다. JavaScript에서 식별자는 변수 및 함수의 이름을 지정하거나 JavaScript 코드의 특정 루프 문에서 점프 위치를 표시하는 데 사용됩니다. JavaScript 식별자는 문자로 시작해야 합니다. 밑줄이나 달러 기호로 시작하세요. 후속 문자는 문자일 수 있습니다. 숫자. 밑줄 또는 달러 기호(숫자는 첫 글자로 나타날 수 없으며 JavaScript는 식별자와 숫자를 쉽게 구분할 수 있음), 다음은 법적 식별자입니다
자바스크립트 예약어
클래스 const 열거형 내보내기
내보내기 확장 가져오기 슈퍼
또한 이러한 키워드는 일반 자바스크립트에서는 허용되지만 엄격 모드에서는 예약어입니다
Let Private Public Yield 인터페이스 패키지 구현
보호된 정적
동일한 엄격 모드에서는 다음 식별자에 엄격한 제한이 적용되지만 변수 이름, 매개 변수 이름, 함수 이름은 사용할 수 없습니다.
인수 평가
JavaScript의 특정 구현에서는 고유한 전역 변수 및 기능을 정의할 수 있습니다. 각 특정 JavaScript 실행 환경(클라이언트) 서버 등에는 염두에 두어야 할 고유한 전역 속성 목록이 있습니다. (클라이언트 자바스크립트에 정의된 전역 변수와 함수 목록을 이해하기 위한 윈도우 객체)
5. 선택적 세미콜론
많은 프로그래밍 언어와 마찬가지로 JavaScript는 세미콜론(;)을 사용하여 명령문을 구분합니다. 이는 코드의 가독성과 깔끔함을 높이는 데 매우 중요합니다. 구분 기호가 없으면 한 문의 끝이 다음 문의 시작이 되고, 그 반대의 경우도 마찬가지입니다.
JavaScript에서 각 명령문은 한 줄에 있으며 명령문 사이의 세미콜론은 일반적으로 생략할 수 있습니다(프로그램 끝의 "}" 중괄호 앞의 세미콜론도 생략할 수 있습니다). 많은 JavaScript 프로그래머(이 책의 코드 예제 포함)는 세미콜론이 꼭 필요하지 않은 경우에도 명령문의 끝을 명확하게 표시하기 위해 세미콜론을 사용합니다. 프로그래밍 스타일에 관계없이 JavaScript에 대해 알아야 할 몇 가지 세부 사항이 있습니다.
다음 코드에서는 첫 번째 세미콜론을 생략할 수 있습니다
a=3;
b=4;
다만, 다음과 같은 형식으로 작성할 경우 첫 번째 세미콜론은 생략할 수 없습니다.
a=3;b=4;
JavaScript는 모든 줄 바꿈에서 세미콜론을 채우지 않는다는 점에 유의해야 합니다. JavaScript는 세미콜론 없이 코드를 정상적으로 구문 분석할 수 없는 경우에만 세미콜론을 채웁니다. 즉, 예외 아래 코드의 두 위치와 유사합니다. 현재 문과 공백이 아닌 후속 문자는 전체적으로 구문 분석할 수 없습니다. JavaScript는 현재 문 끝에 세미콜론을 채웁니다. 다음 코드를 살펴보세요
바
ㅇ
=
3
console.log(a)
자바스크립트는
var a;a=3;console.log(a)
JavaScript는 첫 번째 줄에 세미콜론을 추가합니다. 세미콜론이 없으면 JavaScript는 코드에서 var a a를 구문 분석할 수 없습니다. 두 번째 a는 "a;" 단독 문장으로 간주될 수 있지만 JavaScript는 두 번째 줄 끝의 세미콜론을 채우지 않습니다. 내용의 세 번째 줄과 함께 "a=3;"으로 해석될 수 있기 때문입니다.
일부 명령문 분리 규칙은 예상치 못한 상황을 초래할 수 있습니다. 이 코드 구분은 두 개의 독립적인 명령문처럼 보이는 두 줄로 구분됩니다.
var y = x f
(a b).toString()
두 번째 줄의 괄호와 첫 번째 줄의 f는 함수 호출을 형성합니다. JavaScript는 이 코드를
var y = x f(ab).toString();
분명히 이것은 코드의 의도가 아닙니다. 위 코드를 두 개의 다른 명령문으로 구문 분석하려면 동작의 표시 세미콜론을
일반적으로 구문이 ( [ / -로 시작하면 이전 구문과 함께 구문 분석될 가능성이 매우 높습니다. / -로 시작하는 구문은 흔하지 않지만, ( [로 시작하는 구문은 매우 일반적입니다. 적어도 일부 JavaScript 인코딩 스타일에서는 매우 일반적입니다. 일부 프로그래머는 문 앞에 세미콜론을 보수적으로 추가하는 것을 좋아합니다. 이런 식으로 이전 문을 수정하고 실수로 세미콜론을 삭제하더라도 현재 문은 여전히 있습니다. 동일하게 구문 분석됩니다.
현재 문과 다음 문 줄을 결합하고 구문 분석할 수 없는 경우입니다. 그런 다음 JavaScript는 첫 번째 줄 뒤에 세미콜론을 채웁니다. 이는 두 개의 열을 제외하고 일반적인 규칙입니다. 첫 번째 예외는 returnm, birak 및 continue 문과 관련됩니다(이 세 키워드 뒤에 개행 문자가 오는 경우). JavaScript는 줄 바꿈 시 세미콜론을 채웁니다. 예를 들어
예를 들어
반품
그렇군요;
그리고 자바스크립트는
반품;확실;
코드의 원래 의미는
true를 반환합니다.
즉, 이후의 return, break 및 continue 표현식 사이에는 줄 바꿈이 있을 수 없습니다. 줄 바꿈이 추가되면 프로그램은 매우 특별한 상황에서만 오류를 보고합니다. 그리고 프로그램 디버깅이 매우 불편합니다.
두 번째 예에는 -- 연산자가 포함됩니다. 이러한 표현식 기호는 식별자 표현식의 접두사와 접미사를 나타낼 수 있습니다. 접미사 표현으로 사용되면 접미사 표현으로 사용됩니다. 그것과 표현은 한 줄로 보아야 한다. 그렇지 않으면 줄 끝이 세미콜론으로 채워집니다.
위 코드는
로 파싱됩니다.