toLocaleLowerCase()和toLowerCase()之间的区别

时间:2015-12-15 07:34:12

标签: javascript html string localization locale

我尝试使用fiddletoLocaleLowerCase()方法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>
&#13;
&#13;
&#13;

我的问题是:

  • 什么是区域设置,因为这两个函数似乎都返回类似的输出?
  • 这两种方法有什么区别?
  • 为什么小提琴代码没有被执行?

1 个答案:

答案 0 :(得分:23)

toLowerCase不同,toLocaleLowerCase会考虑本地化。在大多数情况下,对于大多数语言,它们会产生类似的输出,但某些语言的行为会有所不同。

Check out the description on MDN:

  

toLocaleLowerCase()方法根据任何特定于语言环境的大小写映射返回转换为小写的字符串的值。 toLocaleLowerCase()不会影响字符串本身的值。在大多数情况下,这将产生与toLowerCase()相同的结果,但对于某些语言环境(例如土耳其语),其案例映射不遵循Unicode中的默认大小写映射,可能会有不同的结果。

为了完整性,toUpperCasetoLocaleUpperCase的行为相同,除了上壳。

现在针对您的代码段没有做任何事情的问题。实际上有两个问题。

  1. 这些方法返回新字符串,不修改原始字符串(JavaScript字符串是不可变的)。您需要将值重新分配回元素。

  2. innerText是非标准的,并不适用于所有浏览器。请改用textContent,仅添加innerText以支持旧版IE。

  3. 工作片段:

    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>