Две строки с "одинаковыми" символами эмодзи, почему-то не равны друг другу js

Рейтинг: 3Ответов: 1Опубликовано: 11.06.2023

Есть такой код:

const emo = ['⭐', '⭐️'];
console.log(emo[0] === emo[1]) // false
console.log(emo[0].length) // 1
console.log(emo[1].length) // 2

Кто сильно шарит в символах эмодзи, объясните пожалуйста, как это работает. Почему два "одинаковых" эмодзи не равны друг другу, и почему у них разная длина?

Ответы

▲ 0Принят

Оказывается, что в Вашем коде второй ячейки массива присутствуют 3 байта - EF B8 8F, которые ничего не выводят на страницу. Так как длина увеличивается только на единицу, то скорее всего эти байты соответствуют какому-то символу эмодзи, который не поддерживается ОС. Попробуйте просмотреть этот код на других устройствах с другими ОС или в других браузерах.