Q:

Why is "\n" a number "NaN" in Javascript

In JavaScript on Chrome and Firefox:
isNaN( "\n" ) gives false
parseFloat ( "\n" ) gives NaN
The same is yielded for \t, \r and \f.'

\n is a number
Parsed \n gives you Not A Number.
Escaped characters such as the NULL byte \0, \\ and \" do work as expected.
We know that NaN is a number, just not representable by any other value
So \n is a number, that's not representable.

Why do browsers implement it this way? 

A:

Because the toNumber conversion of any string that is comprised only of white space (or if it's empty) results in 0.
console.log(Number("\n")); // 0

The parseInt/Float methods actually require some numeric content to be converted, though it'll allow leading spaces, and trailing garbage.
console.log(parseFloat("   123.45odsifjj")); // 123.45

The toNumber conversion is defined in 9.3.1 ToNumber Applied to the String Type.

A StringNumericLiteral that is empty or contains only white space is converted to +0

