Para poner en mayúscula la primera letra de un string aleatorio, debes seguir estos pasos:

  1. Obten el primer carácter del string;
  2. Convierte la primera letra en mayúscula;
  3. Obten el residuo del string;
  4. Concatena la primera letra en mayúscula con el residuo del string y retorna el resultado;

1. Obten el Primer Carácter del String

Deberías usar el método charAt(), en el índice 0, para seleccionar el primer carácter del string.

const string = "freeCodecamp";

string.charAt(0); // Retorna "f"
Fragmento de Javascript

NOTA:charAt es preferible que usar [ ] (notación de corchete) como str.charAt(0) retorna un string vacio ('')  para str = '' en lugar de undefined en caso de ''[0].

2. Convierte la Primera Letra a Mayúscula

Puedes usar el método toUpperCase() y convertir el string llamado a mayúscula.

const string = "freeCodecamp";

string.charAt(0).toUpperCase(); // Retorna "F"
Fragmento de Javascript

3. Obten el residuo del string

Puedes usar el método slice() y obtener el residuo del string (desde el segundo carácter, índice 1, hasta el final del string).

const string = "freeCodecamp";

string.slice(1); // Retorna "reeCodecamp"
Fragmento de Javascript

4. Retorna el Resultado agregado la Primera Letra y el Residuo del String

Deberías crear una función que acepte solamente un string como argumento y retornar la concatenación de la primera letra en mayúscula string.charAt(0).toUpperCase()  y el residuo del string string.slice(1).

const string = "freeCodecamp";

function capitalizarPrimeraLetra(str) {
  return str.charAt(0).toUpperCase() + str.slice(1);
}

capitalizarPrimeraLetra(string); // Retorna "FreeCodecamp"
Fragmento de Javascript

O puedes agregar la función a String.prototype para usarla directamente en un string usando el siguiente código (para que el método no es enumerable pero pueda ser sobrescrito o borrado más tarde):

const string = "freeCodecamp";

/* 
	Esto es como los métodos son definido en el prototipo 
	de cualquier Objecto incorporado 
*/
Object.defineProperty(String.prototype, 'capitalizarPrimeraLetra', {
    value: function () {
        return this.charAt(0).toUpperCase() + this.slice(1);
    },
    writable: true, // Asi, puede sobreescribirse más tarde
    configurable: true // Asi, puede borrarse más tarde
});

string.capitalizePrimeraLetra(); // Retorna "FreeCodecamp"
Fragmento de Javascript

Traducido del articulo How to Capitalize the First Letter of a String in JavaScript