There is a great tutorial (it's actually a series of them) which I used: http://lodev.org/cgtutor/raycasting.html
It's old and C++ but explains raycasting very well.
And there is also a similar project in just 265 JS lines: http://www.playfuljs.com/a-first-person-engine-in-265-lines/