I recently wrote this parser combinator library called parsinator.js that supports state and debugging functionality:
https://github.com/fresheneesz/parsinator.js
Old Answer:
PEG.js is incredibly easy to work with. Its “try online” feature is really useful in learning how to use the system quickly. I’m currently using it in the Rhino environment to parse a language I’m writing. I’m not a big fan of Rhino, but PEG.js sure is nice.