JS红宝书学习-第3章 语言基础 --数据类型_String(二)
3.4 String 类型
1.字符串的特点
ES中的字符串是不可变得,意思是一但创建,其值就不能改变了。要修改变量的值,必须先销毁原始的字符串,然后将包含新值的另一个字符串保存到该变量,例:
let lang = "Say";
lang = lang + " Hello";
这里,首先我们创建了一个变量lang其包含了一串字符"Say",然后lang被重新定义为"Say"和" Hello"的组合,这时lang会被分配9个字符的空间,之后字符会填充进去。最后后台会把之前的两个原始字符串进行销毁。早期浏览器在处理拼接时非常慢~现在的好了很多。
2.转换为字符串
有两种方式把一个值转换为字符串,首先是使用几乎所有值都有的toString()方法。这个方法的用途就是返回当前值的字符换等价物。例
let age = 11;
let ageAsString = age.toString(); // 字符串"11"
let found = true;
let foundAsString = found.toString(); // 字符串"true"
toString()方法可用于数值,布尔值,对象和字符串值。(字符串值使用会返回自身的副本)null和undefined值没有toString()方法。
使用中toString()一般不用传参数,但是当使用Number转换时,可以传入参数当作底数,来表示进制(二进制,八进制,十进制,十六进制,或其他有效基数)例:
let num = 15;
console.log(num.toString()); // "15"
console.log(num.toString(2)); // "1111"
console.log(num.toString(8)); // "17"
console.log(num.toString(10)); // "15"
console.log(num.toString(16)); // "f"
根据不同底数会转换不同格式,默认格式为十进制。
因为null和undefined不能使用toString()方法,这时你不确认数据格式,可以使用String()方法,来进行转型。它始终会返回表示相应类型的值的字符串。规则如下。
- 如果值有toString()方法,则其调用该方法。并返回结果
- 如果值是null,则返回"null"。
- 如果值是undefined,返回"undefined"。
例:
let value_1 = 1;
let value_2 = false;
let value_3 = null;
let value_4;
console.log(value_1); // "1"
console.log(value_2); // "false"
console.log(value_3); // "null"
console.log(value_4); // "undefined"
除了上面两种,我们是不是还经常直接在变量前追加""来进行类型护转换,例:
let age = "" + 18; // 有点浪费~
这也是可以的,在加号操作符会详细描述。
加油。

浙公网安备 33010602011771号