2011-12-03 13 views
4

以下の3〜6行目の「:」はどういう意味ですか?このjavascriptの行でコロン(:)の意味は何ですか?

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"という文字列を返します。

関連する問題