多次设置Javascript属性

时间:2013-06-20 15:08:55

标签: javascript properties

我目前正在学习javascript,并且在多次设置属性时遇到了这种相当奇怪的行为。例如:

var duck = {feet: 1, feet: 2}

正在运行

show(duck)

我得到了

{feet:2}

这种行为有一些奇怪的javascript原因吗?为什么没有抛出错误?

3 个答案:

答案 0 :(得分:3)

对象中不能有多个同名属性,但该语言允许它以静默方式传递。这是该语言的一个缺陷。 ECMAScript 5严格模式修复了,所以下面会抛出一个错误:

"use strict";
var duck = {feet: 1, feet: 2}
// SyntaxError: Duplicate data property in object literal not allowed in strict mode 

答案 1 :(得分:0)

我有点同意在这里抛出错误是有意义的。我认为解析器只是将对象声明扩展为一系列语句,因此其中没有一部分实际上是无效的。

duck.feet = 1;
duck.feet = 2;

@Blender:我猜测show是他的库中的一种方法,它遍历每个属性并以其相关值打印出来。

答案 2 :(得分:0)

非严格JavaScript允许对象包含具有相同名称的多个属性。当多次使用相同的名称时,仅使用最后一个声明。严格模式要求所有属性名称都是唯一的。

"use strict";