使用[]与{}初始化javascript变量是否有区别

时间:2013-06-04 15:37:59

标签: javascript json

我一直用

var j= {};
j['field'] = value;

显然下面的作品

var j= [];
j['field'] = value;

有什么不同吗?

编辑:对不起我想我在这里使用了错误的单词json而不是对象。我的错。但我的问题直到现在。大多数人都在解释我熟悉的数组和对象之间的区别。

我总是做var x = []; x.push('blah')等。

我也做var x = {}; x.Name ='迈克尔'; x.Age = 21等。

我很惊讶地看到了什么促使我问这个是我看到了类似的代码 var x = []; x.name ='迈克尔';

这是我不习惯的事情,因此发布了这个问题。

感谢所有答案。我已经标记了已接受的答案,该答案最能解决我的问题

7 个答案:

答案 0 :(得分:9)

您的对象不是“JSON”,它们是(空的)对象和数组文字。 JSON是通过传递JSON.stringify的值得到的序列化表单

如果您尝试将其转换为JSON,后者将无效,即使它是合法的JavaScript:

var json = [];             // ok, it's an array
json["field"] = "value";   // still OK - arrays can have properties too
JSON.stringify(json);
> "[]"

即。你得到一个空数组,因为当你尝试序列化一个数组时,你只能从0myArray.length - 1得到数字索引的属性,而不是命名属性。

答案 1 :(得分:3)

[]是一个数组初始值设定项

{}是一个对象初始值设定项

答案 2 :(得分:3)

  • []是零长度数组文字。

  • {}是一个空对象文字。

答案 3 :(得分:1)

[]创建Array实例(具有某些其他属性/方法的对象实例),{}Object实例。

使用[]创建的文件将包含来自Array原型的方法,如push()slice()等。而第二个则不会。

答案 4 :(得分:1)

[]是数组,{}是文字对象。

你可以做这两件事,因为两者都是JavaScript原始对象。

在数组中执行此操作时,您要在数组对象中设置属性,而不是向其中添加项目。
当您在文字对象中执行此操作时......如上所述,您正在该对象中设置属性。

答案 5 :(得分:1)

没有区别。

在这两种情况下,您都在对象上设置属性。只是第二个对象是一个数组。

换句话说,在后一个示例中,您有效地使用了在前一个示例中使用的相同技术,即,您正在对象上设置属性。在这种情况下,一个数组。但是你没有改变数组的内容。

答案 6 :(得分:1)

下面是一个javascript对象,

var json = {};
json['field'] = value; //Valid

下面是一个javascript数组,

var json = [];
//Below does not set the value in array instead it sets a property name field.
//json['field'] = value; 
json.push(value);      //proper way to add an element to an array

两者都是Javascript对象,与JSON无关。

JSON是一种符号,一种遵循不同语言的约定,便于数据通信。基本上,上面的内容将根据JSON约定转换为字符串文字,可以在不同的语言中读取。

有两种方法,

  1. JSON.stringify - 按照JSON表示法将上述内容转换为字符串文字。
  2. JSON.parse - 将JSON字符串文字转换为有效的javascript对象。
  3. 在大多数语言中,相同的功能可用作库,使您可以轻松地跨不同语言进行通信。