卷括号在变量声明中意味着什么?

时间:2015-04-27 01:09:42

标签: javascript string variables character-arrays

当围绕多个{}形式的对时,大括号(integer:string)在变量声明中做了什么?

例如,这里的含义是什么?

char = {0:'(',3:') ',6:' - '};

在这种情况下,它来自以下电话号码格式化脚本:

function formatPhone(obj) {
    var numbers = obj.value.replace(/\D/g, ''),
    char = {0:'(',3:') ',6:' - '};
    obj.value = '';
    for (var i = 0; i < numbers.length; i++) {
        obj.value += (char[i]||'') + numbers[i];
    }
}

我认为定义char的行是导致它失败的行。

3 个答案:

答案 0 :(得分:3)

这是一个Javascript对象。更好的缩进,它看起来像这样:

char = {
    0: '(',
    3: ') ',
    6: ' - '
}

它表示您正在创建一个对象,其中属性036设置为给定值。然后,使用char[i]访问属性,除非定义了属性,否则返回null - 因此对于除0,3和6之外的所有i,它将默认为{{ 1}}。对于0,3和6,它将采用相关的字符串。

好吧,我想我弄清楚什么是“不起作用”,但在我确定之前,我还需要你解释一下这意味着什么。

这一行:

''
如果未定义obj.value += (char[i]||'') + numbers[i];

将在字符串中插入undefined,并且仅为numbers[i] = 0,3或6定义numbers[i]。更改行对此:

i

它应该有用。

答案 1 :(得分:1)

它会创建一个对象:

obj = {0:'(',3:') ',6:' - '};

你的对象里面有两个元素,分别是0,3和6.你可以访问它们obj [0],obj [3]和obj [6]

或者您可以像在示例中那样在循环中访问它们

答案 2 :(得分:1)

这是一个Javascript对象。

  

除了使用构造函数创建对象之外,您还可以   使用对象初始值设定项创建对象。使用对象初始化器   有时也称为使用文字符号创建对象。   &#34;对象初始化器&#34;与C ++使用的术语一致。

     

使用对象初始值设定项的对象的语法是:

var obj = { property_1:   value_1,   // property_# may be an identifier...
            2:            value_2,   // or a number...
            // ...,
            "property n": value_n }; // or a string
     

其中obj是新对象的名称,每个property_i都是   标识符(名称,数字或字符串文字)和每个标识符   value_i是一个表达式,其值分配给   property_i

本文的其余部分可用here