JavaScript语法问题:[{}]层次结构

时间:2014-04-20 10:28:11

标签: javascript arrays syntax nested

我遇到了以下嵌套数组,并且对它为什么使用这种特殊语法感到困惑:

var allQuestions = [{
   question: "Which company first implemented the JavaScript language?",
   choices: ["Microsoft Corp.", "  Sun Microsystems Corp.", "Netscape Communications Corp."],
   correctAnswer: 2
}];

完整示例:http://jsfiddle.net/alxers/v9t4t/

使用是否常见?                     [{...}] 宣布了这样一个变量?

4 个答案:

答案 0 :(得分:1)

该定义是一个包含对象文字的数组。它不是一个嵌套数组。

{
 question: "Which company first implemented the JavaScript language?",
 choices: ["Microsoft Corp.", "  Sun Microsystems Corp.", "Netscape Communications Corp."],
 correctAnswer: 2
}

是一个对象文字,您的数组包含该文字。在您链接到的小提琴中,allQuestions数组中定义了其中的几个。通过这样做,可以轻松地循环遍历问题数组并依次显示每个问题。

答案 1 :(得分:1)

在那里发生的事情是在数组中列出对象,例如:

[{id:1, value:"any"}, {id:2, value:"any any"}]

所以这里我们已经声明了包含两个对象的数组。另一个所谓的传统"方法是:

var arr = [];
var obj1 = {id:1, value:"any"};
arr.push(obj1);
...

答案 2 :(得分:1)

allQuestions变量应该是"一系列问题",其中每个问题都是具有questionchoices或{{1}等属性的对象}}

如果它被声明为correctAnswer,它将只是一个对象。想要了解问题数量var allQuestions = {question: ..., choice: ...}或访问权限的其他代码,例如第一个问题的测试allQuestions.length不起作用。

尝试添加更多问题,您会看到额外括号的用途:

allQuestions[0].question

答案 3 :(得分:0)

allQuestions只是一个对象数组,是的,这是常见的做法。