web-dev-qa-db-fra.com

Différence entre toLocaleLowerCase () et toLowerCase ()

J'essayais de violon avec les méthodes toLocaleLowerCase () et 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>

Mes questions sont:

  • Qu'est-ce que Locale , car les deux fonctions semblent renvoyer une sortie similaire?
  • Quelle est la différence entre ces deux méthodes?
  • Pourquoi le code du violon n'est-il pas exécuté?
21
student

Contrairement à toLowerCase, toLocaleLowerCase prend en compte la localisation. Dans la plupart des cas, avec la plupart des langues, ils produiront une sortie similaire, mais certaines langues se comporteront différemment.

Consultez la description sur MDN:

La méthode toLocaleLowerCase () renvoie la valeur de la chaîne convertie en minuscules en fonction des mappages de cas spécifiques aux paramètres régionaux. toLocaleLowerCase () n'affecte pas la valeur de la chaîne elle-même. Dans la plupart des cas, cela produira le même résultat que toLowerCase (), mais pour certains paramètres régionaux, comme le turc, dont les mappages de cas ne suivent pas les mappages de cas par défaut dans Unicode, il peut y avoir un résultat différent.

Pour être complet, toUpperCase et toLocaleUpperCase se comportent de la même manière, sauf avec le boîtier supérieur.


Maintenant, le problème avec votre extrait de code ne fait rien. Il y a en fait 2 problèmes.

  1. Ces méthodes renvoient de nouvelles chaînes et ne modifient pas l'original (les chaînes JavaScript sont immuables). Vous devrez réattribuer la valeur à l'élément.

  2. innerText n'est pas standard et ne fonctionnera pas sur tous les navigateurs. Utilisez textContent à la place et ajoutez uniquement innerText pour prendre en charge les anciennes versions d'IE.

Extrait de travail:

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>
24
Alexander O'Mara