这个javascript代码中的冒号(:)是什么意思?

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第4章讲解的是数据结构。 - RightSaidFred
2个回答

12
变量errorTypes是一个对象字面量。冒号:将对象属性名称(数字)与其值分隔开来。如果您熟悉其他语言中的哈希表,则此结构是类似的概念。或者在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将返回字符串"位置不可用"。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接