admin 管理员组

文章数量: 887021

JavaScript数据类型

String类型

String类型用于表示由0或多个16位Unicode字符组成的 字符序列,即字符串。字符串可以由双引号"或单引号'表示,因此以下两种字符串写法都是正确的:

var str1 = 'Alvin';
var str2 = "Alvin";

虽然在JavaScript中单引号和双引号都可以用来表示字符串,但是单引号或双引号必须成对出现,不能单双混用。比如:

var name = "Alvin';
var name1 = 'Alvin";

上面这两种写法都是错误的。

字符字面量

String数据类型包含一些特殊的字符字面量,也叫转义序列,用于表示非打印字符,或者具有其他用途的字符。这些字符字面量如下所示:

字面量含义
\n

换行

\t制表符

\b

退格
\r回车
\f换页
\\斜杠
\'单引号

\"

双引号
\xnn以十六进制代码nn表示的一个字符,如\x41表示A
\unnnn以十六进制代码nnnn表示的一个Unicode字符,如\u03a3表示字符∑

这些字符字面量可以出现在字符串中的任意位置,而且也将被作为一个字符来解析,如下面例子所示:

 

var text = "This is the letter sigma: \u03a3";

这个例子中变量text有28个字符,其中6个字符长转义序列表示一个字符。

任何字符串的长度都可以通过访问length属性取得,如下面代码:

console.log(text.length); //28

字符串特点

ECMAScript中字符串是不可变的,也就是说,字符串一旦创建,它们的值就不能再变了,如果要改变某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的字符串填充该变量,如下代码所示:

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

上面代码中的变量lang开始时只包含字符串"Java"。而第二行代码把lang的值重新定义为“Java”和“Script”的组合,即 "JavaScript"。实现这个操作的过程如下:首先创建一个能容纳10个字符的新字符串,然后在这个字符串中填充“Java”和“Script”,最后一步是销毁原来的字符串“Java”和字符串“Script”,因为这两个字符串已经没用了。这个过程是在后台发生的,而这也是在某些老版本浏览器中拼接字符串时速度很慢的原因所在。但这些浏览器在后来的版本中已经解决了这个低效率的问题。

转换为字符串

 要把一个值转换为字符串有两种方式。第一种是使用几乎每个值都有的toString()方法,这个方法唯一要做的就是返回相应值的字符串表现。来看下面的例子:

var age = 11;
var ageAsString = age.toString(); //字符串"11"
var found = true;
var foundAsString = found.toString(); //字符串"true"

数值、布尔值、对象和字符串值(每个字符串也都有一个toString方法,该方法返回字符串的一个副本)都有toString()方法。但null和undefined没有这个方法。

多数情况下,调用toString方法不必传递参数。但是在调用数值的toString方法时,可以传递一个参数:输出数值的基数,默认情况下,toString方法以十进制格式返回数值的字符串表示。而通过传递基数,toString可以输出以二进制、八进制、十六进制,乃至其他任意有效进制格式表示的字符串值。下面看几个例子:

var num = 10;
console.log(num.toString());//"10"
console.log(num.toString(2));//"1010"
console.log(num.toString(8));//"12"
console.log(num.toString(10));//"10"
console.log(num.toString(16));//"a"

通过这个例子可以看出,通过指定基数,toString方法会改变输出值。而数值10根据基数不同,可以在输出时被转换为不同的数值格式。注意在默认情况下(没有参数)输出值与指定基数10时输出值是相同的。

在不知道要转换的值是不是null或undefined的情况下,还可以使用转型函数String(),这个函数能够将任何类型的值转换为字符串。String函数遵循一下转换规则:

  • 如果值有toString方法,则调用该方法(不带参数)并返回相应的结果
  • 如果值是null,则返回"null"
  • 如果值是undefined,则返回"undefined"

再看下面几个例子:

var value1 = 10;
var value2 = true;
var value3 = null;
var value4;console.log(String(value1)); //"10"
console.log(String(value2)); //"true"
console.log(String(value3)); //"null"
console.log(String(value4)); //"undefined"

这里一共转换了4个值,数值、布尔、null和undefined。数值和布尔值的转换结果与调用toString方法得到的结果一样。因为null和undefined没有toString方法,所以String函数就返回了这两个值的字面量。

本文标签: JavaScript数据类型