【问题标题】:doing addition the result should come as five but its coming as NAN做加法结果应该是五,但它是 NAN
【发布时间】:2019-11-09 19:43:59
【问题描述】:
  • 我正在做加法,结果应该是五,但它是未定义的。
  • 我调试了 foo.baz 和 foo.bar 的代码,它应该分别为 3 和 2。
  • 但它的到来是未定义的。
  • 你们能告诉我有什么问题吗?
  • 以便我可以继续进行。
  • 在下面提供我的代码 sn-p
var bar = 1,
    foo = {};

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

console.log("foo.baz--->", foo.baz);
console.log("foo.bar--->", foo.bar);

console.log("bar--->", bar);

foo.baz + foo.bar + bar;

【问题讨论】:

    标签: javascript reactjs object ecmascript-6 scope


    【解决方案1】:

    切换到 foo = {bar: 2, baz: bar++ }(如下所示),这就是您想要的。此外,baz 等于 2,而不是 3,因为您要添加 bar (which = 1) + 1。如果您想要 foo.bar 和 bar 是两个不同的变量。

    var bar = 1,
        foo = {};
    
    foo = {
        bar: 2,
        baz: ++bar //2
    };
    
    
    console.log("foo.baz--->", foo.baz);
    console.log("foo.bar--->", foo.bar);
    
    console.log("bar--->", bar);
    
    console.log(foo.baz + foo.bar + bar); // This will equal 6
    

    这将 console.log foo.baz = 2, foo.bar = 2, bar = 2

    https://www.w3schools.com/js/js_objects.asp 这里是关于如何在 JavaScript 中使用对象的课程。如果你想知道为什么 bar=2,那是因为 ++ 改变了变量 bar 的值。如果你想保持它的原始值,你可以使用 bar + 1。

    【讨论】:

    • 嘿,在我的代码中,foo.baz 是未定义的,是因为: 和 = 符号吗?
    • @zi zi 在你的代码中你已经分配了foo = {}所以你foo = { bar: 2, baz: ++bar //2 };是关于将值分配给foo。
    • @Cal 嘿,在我的代码中,我在 foo 之后加上冒号,而在 CAL 代码中,他等于在 FOO 之后。我的密码--->foo: { bar: 2; baz: ++bar; //3 };
    猜你喜欢
    • 2021-12-01
    • 2017-03-07
    • 2011-01-05
    • 2020-01-30
    • 2012-09-20
    • 1970-01-01
    • 2018-10-23
    • 2016-01-14
    • 1970-01-01
    相关资源
    最近更新 更多