Get A Character from a String in JavaScript

Mar 16, 2022

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.


Did you find this tutorial useful? Say thanks by starring our repo on GitHub!

More Fundamentals Tutorials