js中Object.toString和Object.toLocaleString的区别

字符串返回结果相同

1
2
3
let str = 123;
str.toString(); // "123"
str.toLocaleString(); //"123"

数组返回结果相同

1
2
3
let arr = [1,2,3];
arr.toLocaleString(); // "1,2,3"
arr.toString(); // "1,2,3"

如果是toString(),会直接返回标准的格式;
如果是toLocaleString(),先判断是否指定语言环境(locale),指定的话则返回当前语言环境下的格式设置(options)的格式化字符串;没有指定语言环境(locale),则返回一个使用默认语言环境和格式设置(options)的格式化字符串。

根据MDN - toLocaleString, 内置对象override了toLocaleString的只有Array,Number和Date。所以,对于这三种对象,toLocaleString 的结果也 可能 会不同。

1
2
3
let date = new Date();
date.toLocateString(); // "2017-5-22 14:13:39"
date.toString(); // "Mon May 22 2017 14:13:39 GMT+0800 (CST)"
1
2
3
let num = 1234567890123;
num.toLocaleString(); // "1,234,567,890,123"
num.toString(); // "1234567890123"