Javascript no tiene una forma nativa de hacer que la primera letra de un string sea en mayúsculas, si quieres conseguir esto te toca implementar una función por tu cuenta.

Bueno. miento, si que existe forma de hacer que un texto sea en mayúsculas, se llama toUpperCase, el problema es que aplica a todo el texto y lo queremos solo en la primera letra.

La forma más sencilla de poner la primera letra en mayúsculas consiste en primero extraer la primera letra y posteriormente ponerla en mayúsculas, es decir:

function capitalize(text) {
  const firstLetter = text.charAt(0);
  const rest = text.slice(1);
  return firstLetter.toUpperCase() + rest;
}

Ya ves que la forma de hacerlo es usar el método charAt que tienen los Strings para extraer el char (caracter) en la posición 0 (recuerda que normalmente en los lenguajes de programación el 0 es el primer elemento). Posteriormente se usa slice para partir el texto y quedarnos con todo el resto de caracteres menos la primera letra, y por último se pone en mayúscula y se combinan ambas partes.

Otra variante más compacta de la misma función:

const capitalize = (t) => { return t[0].toUpperCase() + t.substr(1) };

Por último, una variante de lo mismo pero siguiendo un enfoque de programación funcional:

const capitalize = str =>
  str.split(' ')
    .map(([first, ...rest]) => [first.toUpperCase(), ...rest].join(''))
    .join(' ');

Poner la primera letra de cada palabra en mayúsculas

Para conseguir esto la estrategia consiste en dividir el string en un array de palabras para poner cada item en mayúsculas, luego simplemente puedes llamar a la función capitalize que hemos creado antes:

const capitalizeEachWord = (text) => {
  const words = text.split(" ");
  const wordsCapitalized = words.map(word => capitalize(word));
  return wordsCapitalized.join(" ");
}

capitalizeEachWord("hello world"); // La respuesta es "Hello World"

Lo primero que se hace es dividir en palabras usando la función de split de Javascript. A esa función se le pasa un espacio para que devuelva un array con cada palabra.

Luego se hace se llama a la función map de los arrays que se encarga de ejecutar una función por cada item del array, en este caso se ejecuta la de capitalize.

Por último se llama a la función join pasando un espacio para hacer el proceso contrario a split, combinar el array de palabras y añadir un espacio entre cada una.