Recs.
Updated
Specs
Pros
Pro Save yourself from added complexity
By adding another layer of abstraction between your code and the browser you might gain powerful features such as ready made UI components, an event binding framework or a more reliable UI layout mechanism. However the cost of these features is often that overall complexity of the system must increase. For this reason a call has to be made as to whether the extra power given to you is really needed, or whether you can build what you need with what the browsers provide you.
As support for HTML, JavaScript and CSS is becoming more standard and predictable across modern browsers, using a framework simply to cover up browser inconsistencies is no longer reason enough, especially when some frameworks are dropping support for older browsers anyway. Your code must also remain compatible with the framework you are using, which may mean code changes in order to upgrade to the latest version.
An alternative might be to use libraries that don't wrap dom objects or otherwise form a layer between your code and the browser. Signals.js is an example of a library that allows you to add custom events to your objects, simplifying flow and decreasing coupling between modules. However, this is not a framework, it's just a library that does one thing and does it well.
Pro Learn the Language; not the Framework
When programming in a language, you should learn the language well regardless of whether or not you learn any frameworks. However a number of frameworks give you shortcuts which cause you to avoid needing to learn the language's solution, thus limiting your understanding of the language.
The effort required to learn a framework can be significant in itself, making learning it an investment of your time. Should the framework become deprecated, or you find / are forced to work with an alternate framework this will impact your productivity. Had you learnt the underlying language you would be safer (as frameworks live on top of languages, so are by definition outlived by those languages), and more adaptable.
Pro Short learning curve
Almost all newbie developer knows JS, just do good practices and you and your team will be grateful for this decision, just take a look on what happened on shopify they created a framework(batman), but it could not scale and it was taking too long for new engineers to code something, and at the end when they remove it and solve their problems.
Cons
Con Significantly increased ramp-up time when bringing on new developers
For complex frontend-heavy applications and UI's, you'll find yourself writing your own framework. The disadvantage of this is that nobody knows your framework but you. If another team needs to adopt the project it will significantly increase the ramp-up time.
Con Cross Site Caching & CDNs
By making use of existing frameworks which are hosted in common repositories (e.g. Google Code and CloudFlare CDN JS) any visitors to your site who have previously visited a site using the same framework/library will not need to download the code again, as the browser will see the same files are required as were previously downloaded & cached.
Even when your site is the first site visited, as this common code is hosted by the likes of Google and CloudFlare, you take advantage of their infrastructure for delivering this content to your end users, reducing the overhead on both your infrastructure and the download time for your users.