String 类型 表示文本数据。字符串中的每个元素在字符串中占据一个位置。第一个元素的索引为 0,下一个是索引 1,依此类推。字符串的长度是它的元素的数量。
JavaScript 字符串是 不可变的。这意味着一旦字符串被创建,就不可能修改它。字符串操作都是基于当前字符串的内容创建一个新的字符串。
字符串编码
String 类型编码为 UTF-16 码元的 16 位无符号整数值序列。
字符串的长度是其中的 UTF-16 代码单元的数量,这可能与 Unicode 字符的实际数量不符。
创建字符串
字符串可以通过字符串字面量创建为字符串原始值:
const string1 = "A string primitive";
const string2 = 'Also a string primitive';
const string3 = `Yet another string primitive`;
参见字面量、模版字面量。
字符串拼接
使用 + 运算符拼接字符串。
const str1 = "Hello";
const str2 = "World";
const result = str1 + " " + str2; // "Hello World"
比较字符串
比较字符串时都区分大小写。
使用小于和大于运算符来比较字符串:
"a" < "b";
// true
使用相等比较运算符:
"a" === "b"
// false
"a" == "b"
// false
字符串对象
可以通过 String() 构造函数创建为字符串对象:
const string4 = new String("A String object");
注意区分字符串对象和原始字符串值(Boolean 和 Number 也是如此):字符串字面量(使用单引号或者双引号表示)和从非构造函数上下文中的 String 调用返回的字符串(即在不使用 new 关键字的情况下调用)是原始字符串。在需要调用原始字符串的方法或进行属性查找的上下文中,JavaScript 将自动包装原始字符串并在包装对象上调用方法或执行属性查找。
const strPrim = "foo"; // 字面量是一个字符串原始值
const strPrim2 = String(1); // 被强制转换为字符串原始值“1”
const strPrim3 = String(true); // 被强制转换为字符串原始值“true”
const strObj = new String(strPrim); // 使用 `new` 关键字调用 `String` 构造函数返回一个字符串包装对象。
String 对象始终可以使用 valueOf() 方法将其转换为对应的原始值。
相关条目
关于字符串相关方法,参见 String 对象。
参考
String 对象
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String
JavaScript 数据类型和数据结构
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Data_structures
模板字符串
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Template_literals