概述

定义

零或多个16位Unicode字符序列。

创建方式

  • 单引号、双引号、反引号标示。
  • 以某种引号作为字符串开头,必须仍然以该种引号作为字符串结尾。
1
2
3
let message = 'Hello World'
let message1 = "Hello World"
let message2 = `Hello World`

字符字面量

  • 用于标识非打印字符或有其他用途的字符。
  • 转义序列表示一个字符,在计算字符串长度时算一个字符。
  • 如下表:
字面量 含义
\n 换行
\t 制表
\b 退格
\r 回车
\f 换页
\\ 反斜杠
\' 单引号
\" 双引号

字符串特点

  • 不可变:一旦创建就不能发生变化
  • 如果要修改每个变量中的字符串的值,必须先销毁原始的字符串然后重新赋值

转换字符串

  • 方法:toString()
  • null和undefined没有toString()方法,直接返回两个值的字面量文本
  • 数值调用toString方法可以接受一个参数,表示进制。
    1
    2
    3
    let num = 10
    console.log(num.toString(2))//"1010"
    console.log(num.toString(8))//"12"

模板字面量(ES6)

  • 模板字面量保留换行字符,可以跨行定义字符串
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    let message1 = 'one\ntwo';
    let message2 = `one
    two`;

    console.log(message1);
    //one
    //two
    console.log(message2);
    //one
    //two
    console.log(message1==message2);//true

字符串插值

  • 表达式:${变量}
  • 模板字面量不是字符串,是一种特殊的JS语句表达式
1
2
3
4
let value = 5;
let message = `${value}+${value}=${value*value}`;
console.log(message);
//5+5=10
  • 所有插入的值都会使用toString()强制转为字符串

模板字面量标签函数

  • 标签函数接收到的参数依次是原始字符串数组和对每个表达式求值的结果
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
let a = 5;
let b = 10;

function simple(str,aVal,bVal,sum){
console.log(str);
console.log(aVal);
console.log(bVal);
console.log(sum);
return 'finish';
}
//可使用剩余操作符收入到一个数组中
function Tag(str,...exper){
console.log(str);
for(const expression of exper){
console.log(experssion)
}
}
let message = `${a}+${b}=${a+b}`;
let result = simple`${a}+${b}=${a+b}`;
//[""," + "," = ",""]
//5
//10
//15
let result1 = Tag`${a}+${b}=${a+b}`;
//[""," + "," = ",""]
//5
//10
//15
console.log(result)//'finish'

原始字符串

  • String.raw标签函数可用于获取原始字符串
  • 键盘输入的回车等不能获取到原始字符