2011-12-03 2 views
4

아래의 3-6 행에서 ":"은 무엇을 의미합니까?이 자바 스크립트 줄에서 콜론 (:)의 의미는 무엇입니까?

function displayError(error) { 
    var errorTypes = { 
     0: "Unknown error", 
     1: "Permission denied", 
     2: "Position is not available", 
     3: "Request timeout" 
    }; 
    var errorMessage = errorTypes[error.code]; 
    if (error.code == 0 || error.code == 2) { 
     errorMessage = errorMessage + " " + error.message; 
    } 
    var div = document.getElementById("location"); 
    div.innerHTML = errorMessage; 

} 
+4

[Eloquent JavaScript] (http://eloquentjavascript.net/)에서 읽을만한 가치가있을 수 있습니다. [4 장] (http://eloquentjavascript.net/chapter4.html)은 데이터 구조에 관한 것입니다. – RightSaidFred

+1

@ RightSaidFred - 고마워, 정말 좋아 보인다! –

답변

12

가변 errorTypesobject literal이다. :은 개체 속성 이름 (숫자)과 해당 값을 구분합니다. 다른 언어의 해시 테이블에 익숙하다면이 구조는 비슷한 개념입니다. 예를 들어 PHP에서는 연관 배열로 나타낼 수 있습니다.

당신은 할 수 있습니다 : (도트 연산자를 사용하여) 객체 속성을 참조하기위한 일반 구문은이 숫자 속성에 대해 작동하지 않습니다

var errorTypes = { 
    0: "Unknown error", 
    1: "Permission denied", 
    2: "Position is not available", 
    3: "Request timeout" 
}; 

console.log(errorTypes[0]); 
// Unknown error 

console.log(errorTypes[2]); 
// Permission denied 

참고 :

// Won't work for numeric properties 
errorTypes.0 
SyntaxError: Unexpected number 

// Instead use the [] notation 
errorTypes[0] 

을이 경우 숫자 속성 이름이 사용 되었기 때문에 모든 것을 대신 배열로 정의 할 수 있었고 정확히 동일한 방식으로 [] 표기법을 통해 액세스 할 수 있었지만 키에 대한 구문 제어는 거의하지 않았습니다.

// As an array with the same numeric keys 
var errorTypes = [ 
    "Unknown error", 
    "Permission denied", 
    "Position is not available", 
    "Request timeout" 
]; 
console.log(errorTypes[2]); 
0

개체에서 키 값 쌍을 정의하는 방법입니다. 따라서 errorTypes.2은 "Position is not available"문자열을 반환합니다.

관련 문제