理解掌握ECMAScript的String类型

理解掌握ECMAScript的String类型

1.转义序列有哪些?

转义序列,String类型的特殊字符字面量(Character Literals)。java

字面量 含义
\n 换行
\t 制表
\b 空格
\r 回车
\f 进纸
\' 单引号
\" 双引号
\xnn 以十六进制代码nn表示的一个字符(其中n为0~F),例,\x41表示"A"
\unnnn 以十六进制代码nnnn表示的一个Unicode字符(其中n为0~F),例,\u03a3表明一个希腊字符Σ

注意:1个转义序列的字符串表示1个字符。字符串的length属性返回了这个字符串中16位字符的数目。若是字符串中包含双字节字符,那么length属性可能不会精确地返回字符串中的字符数目。git

var a = "\x41";
console.log(a.length);  // 1

var b = "\t";
console.log(b.length);  //1
 

2.字符串有什么特色?

ECMAScript中的字符串是不可变的,也就是说,字符串一旦建立,它们的值就不能改变。github

那么如何改变变量保存的字符串呢?浏览器

首先要销毁原来的字符串,而后再用另外一个包含新值的字符串填充该变量。spa

例:code

var lang = "Java";
lang = lang + "Script";
 

首先,建立一个能容纳10个字符的新字符串;orm

而后,在这个字符串中填充"Java"和"Script";blog

最后,销毁原来的字符串"Java"和字符串"Script"。ip

上面这个过程是在后台发生的,而这也是在某些旧版本的浏览器(例如版本低于1.0的Firefox、IE6等)中拼接字符串时速度很慢的缘由所在。ci

3.如何将其余类型的值转换为字符串?

两个方法:toString() 和 String()。

toString()方法。

Number类型、Boolean类型、Object类型和String类型的值,都有一个toString()方法。

Null类型和Undefined类型的值,没有toString()方法。

var numVlaue = 11;
numVlaue.toString();  // "11"
11 .toString();  // "11",注意,是"11" "空格" "点" "toString()"

var booleanValue = true;
booleanValue.toString(); // "true"
true.toString(); // "true"

var objectValue = {
    mirror:"avatar"
};
objectValue.toString(); //"[object Object]"
 

转换Number类型的值的时候,toString()能够添加参数,用于转换成二进制、八进制、十六进制等模样的字符串,默认不加是十进制。

var num = 10;

num.toString(); // "10"
num.toString(2); // "1010"
num.toString(8); // "12"
num.toString(10); // "10"
num.toString(16); // "a"
 
String()方法。

Null类型和Undefined类型的值,没有toString()方法。因此转换这两种类型的值时候用String()。

String(null);  // "null"
String(undefined); // "undefined"
 

String()方法的转换规则:

  1. 当此类型的值有toString()方法,则用toString()方法;
  2. 若是是null,返回"null"。
  3. 若是是undefined,返回"undefined"。