수색…
소개
예약 키워드
JavaScript에는 변수, 레이블 또는 함수 이름으로 사용할 수없는 미리 정의 된 키워드 모음이 있습니다.
ECMAScript 1
A - E | E - R | S - Z |
---|---|---|
break | export | super |
case | extends | switch |
catch | false | this |
class | finally | throw |
const | for | true |
continue | function | try |
debugger | if | typeof |
default | import | var |
delete | in | void |
do | new | while |
else | null | with |
enum | return |
ECMAScript 2
24 개의 예약어를 추가했습니다. (굵게 새롭게 추가됨).
A - F | F - P | P - Z |
---|---|---|
abstract | final | public |
boolean | finally | return |
break | float | short |
byte | for | static |
case | function | super |
catch | goto | switch |
char | if | synchronized |
class | implements | this |
const | import | throw |
continue | in | throws |
debugger | instanceof | transient |
default | int | true |
delete | interface | try |
do | long | typeof |
double | native | var |
else | new | void |
enum | null | volatile |
export | package | while |
extends | private | with |
false | protected |
ECMAScript 5 / 5.1
ECMAScript 3 이후에는 변화가 없었습니다.
ECMAScript 5 는 int
, byte
, char
, goto
, long
, final
, float
, short
, double
, native
, throws
, boolean
, abstract
, volatile
, transient
및 synchronized
. 그것은 let
과 yield
더했다.
A - F | F - P | P - Z |
---|---|---|
break | finally | public |
case | for | return |
catch | function | static |
class | if | super |
const | implements | switch |
continue | import | this |
debugger | in | throw |
default | instanceof | true |
delete | interface | try |
do | let | typeof |
else | new | var |
enum | null | void |
export | package | while |
extends | private | with |
false | protected | yield |
implements
,let
,private
,public
,interface
,package
,protected
,static
및yield
엄격 모드에서만 허용된다.
eval
과arguments
는 예약어가 아니지만 엄격 모드 에서와 같이 작동 합니다 .
ECMAScript 6 / ECMAScript 2015
A - E | E - R | S - Z |
---|---|---|
break | export | super |
case | extends | switch |
catch | finally | this |
class | for | throw |
const | function | try |
continue | if | typeof |
debugger | import | var |
default | in | void |
delete | instanceof | while |
do | new | with |
else | return | yield |
향후 예약 키워드
다음은 ECMAScript 사양에 의해 향후 키워드로 예약됩니다. 그것들은 현재 특별한 기능을 가지고 있지는 않지만, 그들은 미래의 어떤 시점에있을 수 있기 때문에 식별자로 사용할 수 없습니다.
enum |
다음은 엄격 모드 코드에서 발견 된 경우에만 예약됩니다.
implements | package | public |
interface | private | `정적 ' |
let | protected |
이전 표준의 향후 예약 키워드
다음은 구형 ECMAScript 스펙 (ECMAScript 1에서 3까지)에 의해 향후 키워드로 예약됩니다.
abstract | float | short |
boolean | goto | synchronized |
byte | instanceof | throws |
char | int | transient |
double | long | volatile |
final | native |
또한 리터럴 null, true 및 false는 ECMAScript에서 식별자로 사용할 수 없습니다.
식별자 및 식별자 이름
예약어와 관련하여 변수 또는 함수 이름의 좋아하는 것에 사용되는 "식별자" 와 복합 데이터 유형의 속성으로 허용되는 "식별자 이름" 사이에는 약간의 차이점이 있습니다.
예를 들어, 다음과 같은 경우 잘못된 구문 오류가 발생합니다.
var break = true;
잡히지 않은 SyntaxError : 예기치 않은 토큰 중단
그러나 이름은 객체의 속성으로 간주됩니다 (ECMAScript 5+ 기준).
var obj = {
break: true
};
console.log(obj.break);
이 대답 에서 인용 :
섹션 7.6
식별자 이름은 유니 코드 표준의 5 장 "식별자"섹션에 제공된 문법에 따라 해석되는 토큰입니다. 약간의 수정이 필요합니다.
Identifier
는ReservedWord
가 아닌IdentifierName
입니다 ( 7.6.1 참조).
통사론
Identifier :: IdentifierName but not ReservedWord
사양에 따라 ReservedWord
는 다음과 같습니다.
섹션 7.6.1
예약어는
IdentifierName
로 사용할 수없는Identifier
입니다.ReservedWord :: Keyword FutureReservedWord NullLiteral BooleanLiteral
여기에는 키워드, 미래 키워드, null
및 부울 리터럴이 포함됩니다. 전체 키워드 목록은 7.6.1 절에 있으며 리터럴은 7.8 절에 있습니다.
위의 (7.6 절)은 IdentifierName
이 ReservedWord
가 될 수 있고 객체 이니셜 라이저 의 사양이 될 수 있음을 의미합니다.
11.1.5 절
통사론
ObjectLiteral : { } { PropertyNameAndValueList } { PropertyNameAndValueList , }
PropertyName
이 지정하는 곳 :
PropertyName : IdentifierName StringLiteral NumericLiteral
당신이 볼 수있는 것처럼, PropertyName
수 있습니다 IdentifierName
따라서 수 ReservedWord
들로 PropertyName
들. 결론적 으로 스펙에 따르면, class
와 var
와 같은 ReservedWord
는 문자열 리터럴이나 숫자 리터럴처럼 인용 부호없는 PropertyName
처럼 사용할 수 있습니다.
자세한 내용 은 7.6 절 - 식별자 이름과 식별자를 참조하십시오.
참고 : 이 예제의 구문 형광펜은 예약어를 발견하고 여전히 강조 표시했습니다. 예제가 유효하지만 Javascript 개발자는 달리 주장하는 컴파일러 / 변환기, linter 및 minifier 도구에 의해 잡힐 수 있습니다.