Location seems to be a huge factor in the salary range for Software Engineers. $150,000 is a bit on the high side, but $120,000 for a JavaScript Engineer is pretty common in New York, San Francisco, and even Seattle. Smaller towns tend to offer salaries that are a lot lower.
I think it is mostly a matter of scale. Companies with big technical problems have harder problems to solve, and thus are willing to pay a premium for the best talent. They're also more motivated to be located in tech hubs, where it's easier to find talent.
On the other hand, a company in Lincoln Nebraska is obviously not planning to grow that much, and will have much simpler needs. Because of this, great skills and mediocre skills command the same economic value, and there is a limit to how much engineers can make.