当我们在Javascript中重新声明对象时会发生什么?

时间:2015-09-29 12:52:13

标签: javascript

任何人都可以解释一下为什么foo.bar未定义? 根据我的理解,它应该打印3.如果我错了,请纠正我。

这是代码。

    var bar = 1,
    foo = {};

    foo: {
        bar: 2;
        baz: ++bar;
    };

    foo.bar; //undefined
    foo.baz; //undefined

    bar; //2

提前致谢;

3 个答案:

答案 0 :(得分:9)

您的拼写错误为foo = {而不是foo: {。属性也必须用逗号分隔,而不是分号:

var bar = 1,
    foo = {};

foo = {
  bar: 2,
  baz: ++bar
};

console.log(foo.bar); //2
console.log(foo.baz); //2
console.log(bar); //2

另请查看Object initializer

答案 1 :(得分:4)

您没有重新声明foo。您使用的是label

你应该

foo = {
    bar: 2,
    baz: ++bar
};

答案 2 :(得分:0)

因为你的语法错了。重新初始化=的变量时应该是javascript赋值运算符:

var bar = 1,
foo = {};

foo = {
    bar: 2,
    baz: ++bar,
};

foo.bar; //2
foo.baz; //2

bar; //2

DEMO