Get A Character from a String in JavaScript
To get a character from a string in JavaScript, we recommend using square brackets [].
string[1] returns a string of length 1 containing the 2nd character in the array.
If you access an index that is < 0 or greater than the length of the string, you'll get back undefined.
const string = 'Hello';
const letter = string[1]; // 'e'
string[1]; // 'e'
string[20]; // undefined
string[-1]; // undefined
string['not a number']; // undefined
Keep in mind that string[1] returns a string with length 1.
There is no distinct character type in JavaScript like there is in Java or C++.
typeof string[1]; // 'string'
The charAt() function
The charAt() function also returns the character at the given index of a string.
There are three key differences.
First, if you call charAt() on an index that is < 0 or greater than the length of the string, charAt() will return an empty string.
const string = 'Hello';
string.charAt(1); // 'e'
string.charAt(42); // ''
string.charAt(-1); // ''
Second, if you call charAt() with a value that JavaScript cannot convert to a number, charAt() will return the character at index 0.
string; // 'Hello'
string.charAt('not a number'); // 'H'
Third, charAt() can implicitly convert values to numbers.
For example, if you pass an object with a valueOf() function to charAt(), JavaScript will call valueOf() to try to convert the value to a number.
This can lead to unexpected behaviors, like being able to call charAt() on a Date.
string; // 'Hello'
string.charAt({ valueOf: () => 1 }); // 'e'
string.charAt(new Date(1)); // 'e'
string[{ valueOf: () => 1 }]; // undefined
string[new Date(1)]; // undefined
Because of the potentially unexpected behaviors of charAt(i), we typically recommend using [i] to get the i-th character in a string.