Разница между toLocaleLowerCase () и toLowerCase () [дубликат]

этот вопрос уже есть ответ здесь:

Я пытался скрипка С toLocaleLowerCase () и toLowerCase () методы.

function ByLocale() {
  document.getElementById("demo").innerText.toLocaleLowerCase();
}

function ByLower() {
  document.getElementById("demo").innerText.toLowerCase();
}
<p>Click the button to convert the string "HELLO World!" to lowercase letters.</p>

<button onclick="ByLocale();">By Locale LowerCase</button>
<button onclick="ByLower();">By LowerCase</button>

<p id="demo">HELLO World!</p>

мои вопросы:

  • что это Locale, потому что обе функции вроде же выход?
  • в чем разница между этими двумя методами?
  • почему код скрипки не выполняется?

1 ответов


в отличие от toLowerCase, toLocaleLowerCase учитывает локализацию. В большинстве случаев, с большинством языков, они будут производить аналогичный результат, однако некоторые языки будут вести себя по-разному.

Проверьте описание на MDN:

метод toLocaleLowerCase () возвращает значение строки, преобразованной в нижний регистр в соответствии с любыми сопоставлениями регистров для конкретного языка. toLocaleLowerCase () не влияет на значение самой строки. В в большинстве случаев это приведет к тому же результату, что и toLowerCase (), но для некоторых локалей, таких как турецкий, чьи сопоставления регистров не соответствуют сопоставлениям регистров по умолчанию в Unicode, может быть другой результат.

для полноты, toUpperCase и toLocaleUpperCase ведут себя аналогично, за исключением верхнего корпуса.


теперь для Проблемы с вашим фрагментом ничего не делать. На самом деле есть 2 проблемы.

  1. эти методы возвращают новый строки и не изменяйте оригинал (строки JavaScript неизменяемы). Вам нужно будет повторно присвоить значение элементу.

  2. innerText нестандартная, и не будет работать во всех браузерах. Использовать textContent вместо этого, и только добавить innerText для поддержки старых версий IE.

Рабочий Фрагмент:

function ByLocale() {
  var el = document.getElementById("demo");
  el.textContent = el.textContent.toLocaleLowerCase();
}

function ByLower() {
  var el = document.getElementById("demo");
  el.textContent = el.textContent.toLowerCase();
}
<p>Click the button to convert the string "HELLO World!" to lowercase letters.</p>

<button onclick="ByLocale();">By Locale LowerCase</button>
<button onclick="ByLower();">By LowerCase</button>

<p id="demo">HELLO World!</p>