In JavaScript, numbers have insufficient precision to represent all the digits of 25!, so simply calculating 25 * 24 * ... * 1 will yield an incorrect result.
To work with large numbers, the best approach is to use an arbitrary-precision integer library, like BigInteger.js, that's been thoroughly tested. But even if you can't use a library, you can still calculate 25! by breaking the result into smaller chunks:
function factorial(n) {
    var x = [1, 0];     // Two chunks are enough to represent 25!
    var base = 1e18;    // Each chunk x[0] and x[1] stores a number from 0 to (base - 1).
    function pad(i) {   // Pad a chunk with 0's on the left to 18 digits.
        return (i + base).toString().substr(1);
    }
    function trim(s) {  // Remove all leading 0's from the string s.
        return s.match(/[1-9].*/)[0];
    }
    for (; n > 1; n--) {
        x[0] *= n;
        x[1] *= n;
        if (x[0] >= base) {
            var carry = Math.floor(x[0] / base);
            x[1] += carry;
            x[0] -= carry * base;
        }
    }
    return trim(x[1].toString() + pad(x[0]));
}
console.log(factorial(25)); // 15511210043330985984000000
Note that this code does the bare minimum to calculate 25!. For larger values of n, more chunks need to be added.