I thought this might be a good start for something 3D. It's not-so infinite because the terrain doesn't keep regenerating in front of the camera as you move around (which wouldn't even really take that much refactoring), but the camera's height should keep changing according to the noise even after moving far away from the terrain.
If you don't see anything in the frame above, then either your browser doesn't support WebGL, or your graphics driver is not sufficient for initializing a WebGL context.
The source code is available on GitHub.
To use it, just click on it to receive a pointer lock request through your browser. If you're using a flavor of Firefox, the request will display in the form of a balloon popup. When the request is accepted, you'll be able to pan the camera around Quake style. You can also move about the scene using the classic W, S, A, and D keys.
As the title implies, the shape of the terrain and the Y-position of the camera is determined by a similar simplex noise function (provided by simplex-noise.js) to that of which I used in my previous post. The only real difference is the fact that I used 2D simplex noise here instead of 3D since I had no interest in making the terrain morph. That type of thing would totally be useful for morphing a water surface. Though, in that case, one might just consider using a vertex shader implementation of simplex noise.
Graphics provided by WebGL via the wonderful three.js.