引号通常困扰着初级程序员。引号用来创建字符串,以及用作页面上的消息或作为程序中的变量的其他字符(参见2.3.3节)。JavaScript和其他的编程语言一样,允许使用双引号或者单引号来创建字符串。因此:
var name="Jane";
等同于
var name='Jane';
正如前面一节所介绍的,我们必须包含开始的引号和结束的引号,否则,最终将在Firefox中得到一个“Unterminated string literal”错误(并且所有其他的浏览器也会放弃运行你的脚本)。此外,正如2.3.3节所介绍的,对于每一对引号必须使用同样类型的引号,换句话说,都是单引号或者都是双引号。因此,var name='Jane"将会产生一个错误。
可能产生的另一个常见的问题是在一个字符串中使用引号。例如,很容易产生如下的错误:
var message='There's an error in here.’;
注意There's中的单引号。JavaScript解释器把这个引号看做结束引号,因此,它实际上会这样看待这行代码:var message='There',并且这行代码剩下的部分被看做一个错误。在Firefox错误控制台中,我们将得到消息“Missing;before statement”,因为Firefox认为第二个引号是一条简单的JavaScript语句的结尾,而后面的部分是另一条语句。
我们可以用两种方法来解决这个问题。首先,可以混用并匹配单引号和双引号。换句话说,用双引号来包含带有单引号的一个字符串,或者可以用单引号来包含带有双引号的一个字符串。例如,可以用这种方法来修正上面的错误:
var message="There's no error in here.";
或者,如果字符串包含双引号:
var message='He said,"There is no problem here."’;
另一种方法是对字符串中的引号进行转义。2.3.3节中的“常见问题:把引号放入字符串”部分详细介绍了转义引号,而这里只是一个回顾,要转义一个字符,在其前面放置一个反斜杠,如下所示:
var message='There\'s no error here.’;
JavaScript解释器把\’看做一个单引号字符而不是看做用来开始或结束字符串的符号。