수색…
비고
컴퓨터 프로그래밍에서 열거 형 (열거 형 또는 열거 형이라고도 함)은 형식의 요소, 멤버 또는 열거 자라고하는 명명 된 값 집합으로 구성된 데이터 형식입니다. 열거 자 이름은 일반적으로 언어에서 상수로 동작하는 식별자입니다. 열거 형식을 갖는 것으로 선언 된 변수는 열거 자 중 하나를 값으로 할당 할 수 있습니다.
JavaScript는 약한 형식이며, 변수는 미리 형식으로 선언되지 않으며 네이티브 enum
데이터 형식이 없습니다. 여기서 제공되는 예제에는 열거 자, 대체 방법 및 가능한 절충을 시뮬레이트하는 여러 가지 방법이 포함될 수 있습니다.
Object.freeze ()를 사용하여 열거 형 정의
JavaScript는 열거자를 직접 지원하지 않지만 열거 형의 기능은 모방 할 수 있습니다.
// Prevent the enum from being changed
const TestEnum = Object.freeze({
One:1,
Two:2,
Three:3
});
// Define a variable with a value from the enum
var x = TestEnum.Two;
// Prints a value according to the variable's enum value
switch(x) {
case TestEnum.One:
console.log("111");
break;
case TestEnum.Two:
console.log("222");
}
위의 열거 정의는 다음과 같이 작성할 수도 있습니다.
var TestEnum = { One: 1, Two: 2, Three: 3 }
Object.freeze(TestEnum);
그 후에 변수를 정의하고 이전과 같이 인쇄 할 수 있습니다.
대체 정의
Object.freeze()
메서드는 버전 5.1부터 사용할 수 있습니다. 이전 버전의 경우 다음 코드를 사용할 수 있습니다 (버전 5.1 이상에서도 작동 함).
var ColorsEnum = {
WHITE: 0,
GRAY: 1,
BLACK: 2
}
// Define a variable with a value from the enum
var currentColor = ColorsEnum.GRAY;
열거 형 변수 인쇄하기
위의 방법 중 하나를 사용하여 열거 형을 정의하고 변수를 설정 한 후에는 값의 열거 형에서 변수의 값과 해당 이름을 모두 인쇄 할 수 있습니다. 다음은 그 예입니다.
// Define the enum
var ColorsEnum = { WHITE: 0, GRAY: 1, BLACK: 2 }
Object.freeze(ColorsEnum);
// Define the variable and assign a value
var color = ColorsEnum.BLACK;
if(color == ColorsEnum.BLACK) {
console.log(color); // This will print "2"
var ce = ColorsEnum;
for (var name in ce) {
if (ce[name] == ce.BLACK)
console.log(name); // This will print "BLACK"
}
}
기호를 사용하여 Enums 구현하기
ES6에서는 Enum에 가능한 값으로 문자열을 사용하는 대신 Object
속성의 키로 사용할 수있는 고유하고 변경할 수없는 프리미티브 값인 Symbols를 도입 했으므로 심볼을 사용할 수 있습니다.
// Simple symbol
const newSymbol = Symbol();
typeof newSymbol === 'symbol' // true
// A symbol with a label
const anotherSymbol = Symbol("label");
// Each symbol is unique
const yetAnotherSymbol = Symbol("label");
yetAnotherSymbol === anotherSymbol; // false
const Regnum_Animale = Symbol();
const Regnum_Vegetabile = Symbol();
const Regnum_Lapideum = Symbol();
function describe(kingdom) {
switch(kingdom) {
case Regnum_Animale:
return "Animal kingdom";
case Regnum_Vegetabile:
return "Vegetable kingdom";
case Regnum_Lapideum:
return "Mineral kingdom";
}
}
describe(Regnum_Vegetabile);
// Vegetable kingdom
ECMAScript 6 문서의 기호 는이 새로운 기본 유형을보다 자세히 설명합니다.
자동 열거 형 값
이 예제에서는 열거 형 목록의 각 항목에 값을 자동으로 할당하는 방법을 보여줍니다. 이렇게하면 두 열거 형이 실수로 같은 값을 가지는 것을 방지 할 수 있습니다. 참고 : Object.freeze 브라우저 지원
var testEnum = function() {
// Initializes the enumerations
var enumList = [
"One",
"Two",
"Three"
];
enumObj = {};
enumList.forEach((item, index)=>enumObj[item] = index + 1);
// Do not allow the object to be changed
Object.freeze(enumObj);
return enumObj;
}();
console.log(testEnum.One); // 1 will be logged
var x = testEnum.Two;
switch(x) {
case testEnum.One:
console.log("111");
break;
case testEnum.Two:
console.log("222"); // 222 will be logged
break;
}