Я понимаю, что использование этой функции сделает всю строку строчной. Тем не менее, мне любопытно работать за кулисами. Я не могу найти объяснения в любом месте о том, как это работает. Происходит ли это в основном по каждому индексу в строке и проверяет, есть ли этот символ и доступен ли более низкий регистр?Как работает toLowerCase() в Javascript?
ответ
В общем лучшем месте, чтобы искать такую информацию является ECMAScript specification: принимается
следующих шагов:
- Вызов CheckObjectCoercible передавая это значение в качестве аргумента.
- Пусть S является результатом вызова ToString, давая ему это значение в качестве аргумента.
- Пусть L - строка, в которой каждый символ L является либо младшим символом Юникода соответствующего символа S, либо фактическим соответствующим символом S, если не существует эквивалент нижнего регистра Unicode.
- Возвращение Л.
Для целей этой операции 16-битовые кодовые блоки из строк, рассматриваются в качестве точек коды в Unicode, Basic Multilingual Plane. Суррогатные кодовые точки напрямую передаются из S в L без какого-либо сопоставления.
Результат должен быть получен согласно сопоставлениям case в базе данных символов Юникода (это явно включает в себя не только файл UnicodeData.txt, но также файл SpecialCasings.txt, который сопровождает его в Unicode 2.1.8 и новее).
Шаг 3 - это то, что вас действительно интересует. Как вы можете видеть, детали того, как производится «L», соответствуют реализации. Если вы заинтересованы в том, чтобы идти глубже, следующее место для поиска будет, например, V8 engine.
3. На самом деле это не похоже на конкретную реализацию - она ссылается на определенную спецификацию Unicode. Ну, кроме того, что есть несколько версий Unicode, конечно ... – Luaan
@Luaan - Он не указывает, как вы получаете от 'S' до' L'. В нем указано, что должно быть «L», а не как туда добраться. –
Я не думаю, что вы читаете это право - он явно говорит, что вы сопоставляете каждый из символов в S с эквивалентным строчным символом в соответствии с правилами юникода (сопоставления обсадных) на L. Насколько проще, чем S [i] - > L [i] вы можете получить? – Luaan
- 1. Javascript - 'toLowerCase()' не работает над объектным свойством
- 2. Javascript - Создание индекса массива toLowerCase() не работает
- 3. Javascript toLowerCase странного поведение
- 4. JavaScript .toLowerCase/.toUpperCase undefined
- 5. .toLowerCase в javascript «не функция»?
- 6. JQuery toLowerCase не работает
- 7. Javascript toLowerCase() возвращает другое значение
- 8. Метод toLowerCase(), как представляется, не работает
- 9. Javascript .toLowerCase/.toUpperCase в смешанном режиме
- 10. почему toLowerCase() не работает в пределах заменить
- 11. Почему toLowerCase() не работает с регулярным выражением?
- 12. Java .split не работает с toLowerCase
- 13. Как расширить JavaScript с помощью глобального метода, такого как .toLowerCase()?
- 14. toLowerCase() бесполезная скобка?
- 15. nodejs/bower Ошибка «toLowerCase»
- 16. toLowerCase() с `filter` в jquery
- 17. Java, toLowerCase(), nullPointerException
- 18. Проблемы с String toLowerCase
- 19. Лучше ли сравнивать строки, используя toLowerCase или toUpperCase в JavaScript?
- 20. метод Scala toLowerCase в искре
- 21. ToLowerCase в Chrome против Firefox
- 22. JAVA toLowerCase() получает символы
- 23. Ограничить действие toLowerCase частью строки?
- 24. jQuery/js toLowercase
- 25. toLowerCase() странное поведение
- 26. Нечувствительная к регистру подсказка не работает даже с использованием toLowerCase
- 27. Свойства печати с .toLowerCase
- 28. Какова мотивация Rust's ToLowercase
- 29. Как преобразовать одну букву строки toLowerCase
- 30. run toLowerCase() против всех ключей в объекте
Ответ на это будет специфичным для реализации; некоторые могут просто позвонить в библиотеку, чтобы сделать для нее преобразование. –
[Эта страница из MDN] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/toLowerCase) также может помочь. –