A little late to the party but here is the simplest way I’ve found to express starts/ends of weeks. The isoWeek argument starts weeks on Monday according to the ISO 8601, while week starts weeks depending on your locale (so probably either Sunday or Monday).
This week:
moment().startOf('isoWeek')
moment().endOf('isoWeek')
Next week:
moment().add(1, 'weeks').startOf('isoWeek')
moment().add(1, 'weeks').endOf('isoWeek')
Last week:
moment().subtract(1, 'weeks').startOf('isoWeek')
moment().subtract(1, 'weeks').endOf('isoWeek')
I like these constructions because they are incredibly readable. It’s also easy to go back or forward any number of weeks by specifying how many weeks you want in subtract or add.