icodex | 前端技术博客 | 专注 React、TypeScript、AI 与性能优化 Blog
icodex - 个人网站
马上订阅 icodex | 前端技术博客 | 专注 React、TypeScript、AI 与性能优化 Blog RSS 更新: https://icodex.me/atom.xml
JavaScript Intl 对象全面指南
Intl 对象是一个 JavaScript 的国际化 API,提供了精确的字符串对比、数字格式化和日期时间格式化功能。本文将全面介绍 Intl 对象的 API 功能和使用方法。
Intl 对象兼容性说明
Intl 对象不同于其他 ECMA 262 规范定义的 JS API,它是在 ECMA 402 中定义的。当我们查阅 ECMA 262 和 ECMA 402 规范可以发现它们之间的区别在于:
- ECMA 262:This Standard defines the ECMAScript xxx general-purpose programming language,本标准定义了 ECMAScript 通用编程语言规范;
 - ECMA 402:This Standard defines the application programming interface for ECMAScript objects that support programs that need to adapt to the linguistic and cultural conventions used by different human languages and countries,本标准定义了 ECMAScript 对象的应用程序编程接口,这些对象支持需要适应不同人类语言和国家使用的语言和文化惯例的程序。
 
所以 ECMA-262 是 ECMAScript 语言规范(也就是我们熟知的 ES3、ES5、ES6…);而 ECMA-402 则是 JavaScript 的国际化 API 标准,专门定义一些关于国际化处理的 API 规范。
ECMA-402 规范最早在 2012 年 12 月分发布的第一个版本,到今天为止 ECMA-402 规范已经迭代了 12 次,从 2015 年(也就是 ES6)开始每年都会更新。
浏览器兼容上,从 2017 年 9 月(ES7)开始,市面上的主流浏览器都已经支持了 Intl 对象的使用。
下面我们再一起看下 Intl 对象的主要 API。
Intl.Locale
Intl.Locale 对象表示和操作 语言环境(locale) 信息,语言环境就是描述用户语言、地区和文化偏好的一个标识符,例如 en-US 代表说英语的美国。Intl.Locale 对象可以把这些字符串解析成结构化数据,并允许你提取、修改或扩展。
构造函数
使用 new Intl.Locale() 构造函数来创建一个 Intl.Locale 对象实例,该函数有两个参数:
- 
tag:必填参数,一个 Unicode BCP 47 规范的语言标签字符串或者一个Intl.Locale对象;这个 Unicode BCP 47 语言标签由 5 个部分组成:language[-script][-region][-variants][-extensions]- language:必填,例如 
"en"、"zh" - script :可选,书写系统,例如 
"Latn"(拉丁字母)、"Hans"(简体汉字) - region:可选,地区代码,例如 
"US"、"CN" - variants / extensions:可选,用来指定特殊的扩展规则(比如日历、排序方式等)
 
 - language:必填,例如 
 - 
options:一个区域设置的对象,用来指定或覆盖第一个参数的 Unicode 扩展关键字,包括:language:语言子标签,由 23 或者 58 个字母组成,如en、zh等,全部数据在这个 XML 中维护;...
 
剩余内容已隐藏