使用[]初始化javascript变量和使用{}初始化变量有区别吗?
Is there a difference in Initializing javascript variable using [] versus {}
我一直用
var j= {};
j['field'] = value;
显然下面也可以
var j= [];
j['field'] = value;
什么不同吗?
编辑:对不起,我想我在这里使用了错误的单词json而不是对象。我的坏。但我的问题依然存在。大多数人都在向我解释我所熟悉的数组和对象之间的区别。
我总是做var x = [];x.push("废话")等。
我也做var x = {};x.Name = 'Michael';x.年龄= 21岁等
让我惊讶的是,我看到的代码是这样的Var x = [];x.name = 'Michael';
这是我不习惯的事情,因此发布了这个问题。
谢谢你的回答。我已标记了最能回答我的问题的公认答案
你的对象不是"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);
> "[]"
。你只是得到一个空数组,因为当你试图序列化一个数组时,你只得到从0
到myArray.length - 1
的数字索引属性,而不是命名属性。
[]是数组初始化式
{}是一个对象初始化式
-
[]
是一个零长度数组字面值 -
{}
是一个空对象字面值。
[]
创建一个Array
实例(这是一个具有某些附加属性/方法的对象实例),{}
和Object
实例。
使用[]
创建的一个将具有来自Array
原型的方法,如push()
, slice()
等,而第二个则不会。
[]
为数组,{}
为文字对象。
你可以同时做这两件事,因为它们都是JavaScript的基本对象。
当你在数组中这样做时,你是在数组对象中设置一个属性,而不是向它添加一个项。
当你在字面对象中这样做时…正如上面所说,你在那个对象中设置了一个属性
没有区别。
在这两种情况下,你都是在对象上设置属性。只是第二个对象是一个数组。
换句话说,在后一个示例中,您有效地使用了与前一个示例中相同的技术,即在对象上设置属性。在本例中,是一个数组。但是你并没有改变数组的内容
下面是一个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约定转换为字符串字面值,可以跨不同语言读取。
有两种方法,
-
JSON.stringify
-将上述内容转换为JSON表示法下的字符串文字。 -
JSON.parse
-将JSON字符串文字转换为有效的javascript对象。
相同的函数在大多数语言中都可以作为库使用,这使得您可以轻松地跨语言进行通信。
- 使用名称初始化 ng-app 会禁用变量初始化
- 使用变量初始化数组:意外的令牌 +
- 使用变量初始化javascript数组
- 使用jQuery.when时进行了奇怪的变量初始化
- 使用angularjs范围变量初始化javascript变量
- 异步角度承诺和变量初始化
- JavaScript 变量初始化显示 NaN
- 使用静态变量初始化同一类中的变量
- JavaScript 中正确的“私有”变量初始化
- 角度 - 全局变量初始化一次 - 页眉中的示例用户名
- 角度变量初始化
- 对象变量初始化
- Snap SVG - 我可以使用多个变量初始化 snap.svg 指向标记中的不同 svg ID 吗?
- 使用 PHP 变量初始化选择标签
- JavaScript 在没有全局变量初始化值的情况下得到错误
- Javascript变量初始化
- AngularJS-$rootScope变量初始化失败
- Javascript 变量初始化语法
- 在变量初始化时运行代码
- 为什么这个变量初始化不对数字生效?