Эта статья представляет собой расшифровку моей бесплатной серии YouTube об основах веб-разработки. Если вы предпочитаете смотреть, а не читать, посетите мой канал Dev Newbs.
Здравствуйте, мои коллеги-разработчики! Мы вступаем на территорию странных методов, которые почти никто не использует, но каким-то образом нам нужно охватить их, чтобы дополнить их всеми методами объекта String. Итак, вот один из этих методов. Вот!
Метод toLocaleLowerCase() возвращает значение строки вызова, преобразованное в нижний регистр, в соответствии с любым сопоставлением регистра, зависящим от локали.
Как правило, этот метод возвращает тот же результат, что и метод toLowerCase(). Однако для некоторых локалей, где возникает языковой конфликт с обычным сопоставлением регистра Unicode (например, турецкий), результаты могут отличаться.
Параметр локали указывает локаль, которая будет использоваться для преобразования в нижний регистр в соответствии с любыми сопоставлениями регистра, специфичными для локали. Если в массиве указано несколько локалей, используется наилучшая доступная локаль.
Если вы не укажете локаль в качестве первого параметра, он преобразует строку в строчные буквы в соответствии с текущей локалью хоста.
const str = "İstanbul"; // get default locale for my browser "My default locale: '" + navigator.language + "'" // OUTPUT: My default locale: 'sk-SK' // my default (slovak) browser's locale str.toLocaleLowerCase() // i̇stanbul // english US locale str.toLocaleLowerCase('en-US') // i̇stanbul // Turkish locale str.toLocaleLowerCase('tr') // istanbul // compare the values of lowercase results with different locales str.toLocaleLowerCase('en-US') === str.toLocaleLowerCase() // OUTPUT: true str.toLocaleLowerCase() === str.toLocaleLowerCase('tr') // OUTPUT: false str.toLocaleLowerCase('tr') === str.toLocaleLowerCase('en-US') // OUTPUT: false
Когда мы выводим результаты преобразования в нижний регистр, мы получаем такое же визуальное представление строки. Однако, когда мы сравниваем результаты друг с другом, мы обнаруживаем, что турецкая версия не равна двум другим. Однако они равны друг другу.
Также есть возможность получить исключение в результате конвертации. Если быть точным, мы можем получить два разных типа исключений.
Во-первых, это RangeError, который выдается, когда параметр локали недействителен. Во-вторых, TypeError, если элемент в массиве локалей не имеет строкового типа. Давайте посмотрим на них в действии в примере 2.
let locales = ['tr-TR', 2]; try { // RangeError console.log(str.toLocaleLowerCase('engl')); } catch (err){ console.log(err); } // OUTPUT: // RangeError: Incorrect locale information provided // at String.toLocaleLowerCase (<anonymous>) console.log("---"); try { // TypeError console.log(str.toLocaleLowerCase([2, 'en-US'])); } catch (err){ console.log(err); } // OUTPUT: // TypeError: Language ID should be string or object. // at String.toLocaleLowerCase (<anonymous>)
Мы получаем RangeError, потому что предоставленная строка «engl» не представляет какой-либо допустимой локали. Точно так же мы получаем TypeError, потому что номер 2 не входит в число разрешенных типов ввода в массиве локалей.
И это все. Я сделал этот эпизод коротким и приятным, потому что нам еще нужно рассказать о трех других связанных методах. Если вы хотите знать, какие из них я имею в виду, ждите следующего эпизода.
Как обычно, спасибо за внимание. Скоро увидимся в следующем эпизоде.