网页通常存在大量的文本内容,这些文本内容在 JS 中将作为字符串来处理。在 JS 中使用字符串可以在客户端动态处理网页文本内容。在 JS 中,字符串(string)是由单引号或双引号括起来的一组由 16 位 Unicode 字符组成的字符序列,用于表示和处理文本。
Unicode,也称统一码、万国码。由于计算机只能处理 0 和 1 两种数字,所以对需要处理的数据,要将其编码为二进制。最早的计算机使用一个字节(8bit)来表示一个数据,此时的编码称为 ASCII 编码,该编码能表示大小写英文字母、数字和一些符号,共 255 个字符。
对于汉字、日文和韩文等语言则无法使用 ASCII 码来表示。为此,各个国家制定了不同的编码来表示各自的文字。由于这些不同语言的文字编码并没有完全兼容,所以在进行转码时很可能会出现乱码。为了解决这个问题,就需要将不同语言的编码进行统一。为此 Unicode 编码应运而生。
Unicode 将所有语言都统一到一套编码里,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,从而实现跨语言、跨平台的文本转码。Unicode 通常用两个字节来表示一个字符,而原来使用 ASCII 编码的字符则通过将高字节全部补 0 的方式从单字节变成双字节字符。
字符串的使用有以下 3 种方式。
字符串直接量就是直接使用单引号或双引号括起来的一组字符序列,例如:"您好",'hello'。
字符串变量是指值为字符串直接量的变量,例如:var str=‘您好’,变量 str 为字符串变量。
字符串对象通过使用关键字 new 且包装字符串直接量来创建,创建格式如下:
例如:var str=new String(“hi”),此时 str 是一个字符串对象。
注意:对象名的命名遵循标识符命名规范。
对象既可以有存储数据的属性,又可以包含处理数据的函数。为了便于对字符串直接量和字符串变量的处理,JavaScript 处理它们时,首先会将其转换为一个伪对象(等效于字符串对象),因而字符串直接量和字符串变量也具有属性和方法,这些属性及方法和字符串对象的属性和方法是完全一样。
由于创建字符串对象需要对字符串直接量进行包装,从而有可能拖慢执行速度,并可能产生其他副作用,所以在实际项目中尽量不要对字符串创建对象,而应直接使用字符串直接量进行处理,或先将其存储在一个变量中,然后针对字符串变量进行操作。
由于字符串直接量、字符串变量和字符串对象三者具有相同的属性和方法,所以在介绍它们的属性和方法时,在不混淆的情况下,将不再具体区别,而是直接使用“字符串”来统称。
需要注意的是,在字符串中存在\时,如果其后面跟着 n、r、t 等某些特定的字符,则\会和后面的字符组成一个转义字符,此时会改变\后面跟着的那个字符的常规解释,例如:\n表示换行,\"表示字符串中的双引号。