String 类型
String(字符串)数据类型表示零或多个 16 位 Unicode
字符序列
字符字面量
字符串数据类型包含一些字符字面量,用于表示非打印字符或有其他的用途。
字面量 | 含义 |
---|---|
\t | 制表符 |
\b | 退格 |
\r | 回车 |
\f | 换页 |
\\ | 反斜杠() |
\' | 单引号(') |
\" | 双引号(") |
\xnn | 以十六进制编码 nn 表示的字符串(其中 n 是十六进制数字 0-F) 例如"\x41" 等于"A" |
\unnnn | 以十六进制编码 nnnn 表示的 Unicode 字符串(其中 n 是十六进制数字 0-F) 例如"\u03a3" 等于希腊数字"Σ" |
这些字面量可以出现在字符串中的任意位置,并且可以作为单个字符串被解释
let text = "This is the letter sigma:\u03a3 .";
console.log(text.length); //28
因为转义字符表示一个字符 即使包含 6 个字符长的转义序列 text
的长度仍然是 28
。
warning
如果字符串中包含双字节符号,那么 length 属性返回的值可能就不是准确的字符数了
字符串的特点
ECMAScript
中的字符串是不可变的,意思是一旦创建,它们的值就不能变了。要修改某个变量中的值,必须要摧毁原始的字符串。
然后将包含新值的的另一个字符串保存到该变量。
let lang = "Java";
lang = lang + "Script";
整个过程首先会分配一个足够容纳 10 个字符的空间,然后填充上Java
和Script
最后销毁原始的字符串Java
和Script
。
转换为字符串
有两种方式把一个值转换为字符串。首先是使用几乎所有值都有的 toString()
方法,该方法返回当前值的字符串 等价物。
let age = 11;
let ageAsString = age.toString(); //字符串 "11"
let found = true;
let foundAsString = found.toString(); //字符串 "true"
toString()
方法可用于数值,布尔值,对象和字符串。 null
和undefined
值没有 toString() 方法。
多数情况下,toString()
不接受任何参数。不过,在对数值调用这个方法的时候,toString()
可以接收一个底数参数。
默认按照数值的十进制展示
let number = 10;
console.log(number.toString()); //"10"
console.log(number.toString(2)); //"1010"
console.log(number.toString(8)); //"12"
console.log(number.toString(16)); //"a"
console.log(number.toString(10)); //"10"
如果你不确定一个值是不是null
或者undefined
可以使用 String()
函数 进行转换。String()
函数遵循以下规则
- 如果值是
null
或者undefined
则返回对应的字面量文本"null"
"undefined"
- 如果值有
toString()
方法 则调用该方法(不传底数参数) 并返回结果