String类型

1. 字符串中可以包含转义字符,这包括: 

\n 换行 \t 制表 \b 退格 \r 回车 \f 换页 \\ 反斜杠 \'单引号 \" 双引号 \`反引号 \xnn以16进制编码表示的字符 \unn以16进制编码表示的unicode字符

2. 字符串的特点,简单来说就是字符串能够拼接

3.转换字符串

let age=11;
age.toString(); //默认以10进制模式转换为字符串
age.toString(2);
age.toString(16);
// 参数的取值范围 [2,36]
let bool = true;
bool.toString(bool);//"true"

4.模板字面量

//没有空格的,意料之中的
let str =`hello
world`;
console.log(str);

需要注意的是不要对齐上一行,不然前面会有很多空格,比如:

//手段对齐的后果,就是输出时,前面很多空格
let str =`hello
          world`;
console.log(str);

5.字符串插量

以前,一般是这么做:

let value=5;
let allCode = value + " : " + '--' + (value*value);//使用+号拼接

现在,应这么做,插入的值都会使用toString()强制转换为字符串(不影响被定义的变量)

let value=5;
let str = `${value} is a code ${value*value}`;

甚至可以

let str=`${value} is a code ${`world`}`;
let foo = {toString: () => `world`};
			console.log(`Hello, ${foo}`);

在插值表达式中可以调用函数和方法:

function capitalize(word) {
		return `${word[0].toUpperCase()}${word.slice(1)}`;
}
console.log(`${capitalize('hello')}`);

6.模板字面量标签函数

标签函数会接受被插值记号后的模板和对每个表达式求值的结果,这句话听起来有点绕,简单来说就是接受${}符号里面的计算结果。

let a=6;
let b=9;
// function 某某函数名(strings, ...)
function simpleTag(strings, aVal, bVal, Sum) {
		console.log(strings);
		return aVal * bVal * Sum;
}
let c=simpleTag`${a}+${b}=${a+b}`;
console.log(c);

重点一:需要注意的是标签函数本身是一个常规函数,

是通过前缀 strings 识别,所以每个标签函数必须形如 function func(strings, . . . 参数)

因为表达式的数量是可变的,所以应该使用剩余操作符把它们收集到一个数组中:

let a=6;
let b=9;
// 剩余操作符 ...
function simpleTag(strings, ...all) {
		console.log(strings);
		let sum=0;
		for(const k of all) {
				sum+=k;
				console.log(k);
		}
		return sum;
}
let c=simpleTag`${a}+${b}+${`9`}`;
console.log(c);

重点二:剩余操作符形如 ...某某参数名 的形式

有意思的是,这里输出的是 159,这是因为 ${`9`} 被解释为一个字符串,实际上是 '15' + '9' 拼接的结果。

7. 原始字符串

使用String.raw标签函数能够获取原始的字符串,而不是被转换后的字符。

console.log(String.raw`123\n123`);

这样子,就不会输出转义符。

实现一个与 String.raw 相同行为的标签函数

function printRaw(strings, ...all) {
    return strings.raw.toString();
}

南无阿弥陀佛,祝你吉祥!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值