简体   繁体   中英

How do I add up a number to a properties in my object?

I have an object like this:

var statistics = {
    won: 0,
    tie: 0,
    lost: 0
};

I have a function that adds 1 to won :

var plus1 = function() {
    return statistics.won++;
}

I call that function within an if/else statement like this:

plus1();

But it doesn't work. Does anyone have an idea?

It's probably that x++ returns x instead of x+1. You are looking for

var plus1 = function() {
    return ++statistics.won;
}

Looking at your code I don't really see any reason why you would return your result.

I would rewrite the function to simply be

function plus1() {
  statistics.won++;
}

When it comes to having it update, I can't see any were in your code where you actually update the html. After you've run plus1(). If I run console.log(statistics) in my Console I can see that statistic.won goes up whenever I win.

As already mentioned in the comment above, if you run wins() after you've run plus1() it will all work.

This is due to to way pre/post incrementation works in JavaScript:

var one = 1;
var two = 1;

// increment `one` FIRST and THEN assign it to `three`.
var three = ++one; 

// assign `two` to `four`, THEN increment it
var four = two++;

So in your code, you're assigning the value of statistics.won to the return value first and then incrementing it. You can see the difference in how they work here .

So, as I mentioned in the comments, return ++statistics.won; is the solution you need.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM