当前位置:嗨网首页>书籍在线阅读

11-转义

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

转义

当尝试在一段由文本写成的程序中表示文本数据时,如何区分文本数据和程序本身将会是一个问题。可以给字符串加上引号,但如果字符串本身也包含引号时会怎么样呢?要解决这个问题,需要对特殊字符进行转义,转义之后它们就不会被作为字符串终止符("或')处理了 。来看一个例子(不需要转义)

const dialog = 'Sam looked up, and said "hello, old friend!", as Max   
walked in.';
const imperative = "Don't do that!";

在常量 dialog 中,因为采用了单引号的赋值方式,所以可以在内部放心地使用双引号。同样,在 imperative 中,双引号的赋值方式允许在其内部使用单引号。但如果在内部嵌套使用双引号会怎么样呢?比如下面的例子:

// 这行代码会产生错误
const dialog = "Sam looked up and said "don't do that!" to Max.";

不管使用单引号还是双引号,字符串常量dialog都会报错。不过还好,可以使用反斜杠(\)对引号进行转义。反斜杠作为一个信号告诉JavaScript该字符串并没有结束。下面使用两种类型的引号来重写之前的列子:

const dialog1 = "He looked up and said \"don't do that!\" to Max.";
const dialog2 = 'He looked up and said "don\'t do that!" to Max.';

当在字符串中使用反斜线时,就会遇到“先有鸡还是先有蛋”的问题。要解决这个问题,可以在反斜线前面再加一个反斜线:

const s = "In JavaScript, use \\ as an escape character in strings.";

至于采用单引号还是双引号完全取决于个人的喜好。针对一些提供给用户阅读的文字信息,因为缩写(像don’t)出现的频率较多,作者会倾向于使用双引号。而当我在JavaScritp字符串中插入HTML脚本时,则更喜欢使用单引号,这样就可以使用双引号表示HTML标签相关属性的值。