轉(zhuǎn)義字符,編程萌新應(yīng)該都被這個(gè)概念困擾過(guò)。理解這個(gè)概念,需要抓住幾個(gè)要點(diǎn):
1.轉(zhuǎn)義字符的目的。
(1)為了解決編程語(yǔ)言中的字符含義沖突。
(2)為了表示一些本來(lái)不能用字符表示的含義。
- 沖突的表現(xiàn)
編程語(yǔ)言元字符與字符串?dāng)?shù)據(jù)的沖突。
每種編程語(yǔ)言都有自己的元字符,包括關(guān)鍵字、運(yùn)算符等等。以javascript為例,逗號(hào)、分號(hào)、“var”這些都是語(yǔ)言的元字符。
每種語(yǔ)言都會(huì)規(guī)定自己的數(shù)據(jù)類(lèi)型的字面表示方法。比如,js中:
//這些字面值代表Number類(lèi)型
123
1.1
//數(shù)組
var a = [1,2,3];
//對(duì)象
var b ={ name:'eleorc';age'18'};
關(guān)鍵點(diǎn),編程語(yǔ)言中都少不了一種叫做字符串的數(shù)據(jù)類(lèi)型。
var c = 'hello';
var d = "world";
可以看到,js中,字符串這種數(shù)據(jù)類(lèi)型的表達(dá),需要使用成對(duì)的單引號(hào)或者雙引號(hào)字符。也就是,當(dāng)在js代碼中,出現(xiàn)成對(duì)的單引號(hào)或者雙引號(hào),js解釋器會(huì)把中間的字面值作為字符串?dāng)?shù)據(jù)處理。
那么問(wèn)題來(lái)了,如果字符串?dāng)?shù)據(jù)中,需要表達(dá)單引號(hào)或者雙引號(hào)這個(gè)字符,改怎么辦呢?
這個(gè)問(wèn)題可以概括為:在字符串?dāng)?shù)據(jù)中需要表達(dá)限定字符串邊界的元字符,改怎么辦?
我們不能簡(jiǎn)單使用這個(gè)字符的字面值,因?yàn)檫@個(gè)字符已經(jīng)被編程語(yǔ)言賦予了含義(限定字符串邊界)。如果簡(jiǎn)單的在兩個(gè)單引號(hào)中,在寫(xiě)一個(gè)單引號(hào),那么js解釋器該如何匹配字符邊界呢?
//存在邏輯混亂的寫(xiě)法,也許人類(lèi)可以看懂,但解釋器不能。
var s = 'I'm OK;'
因此,需要用另外的字面值來(lái)代表字符串限定符號(hào)。
反斜線,在字符串中,被賦予了特殊的含義。
請(qǐng)注意轉(zhuǎn)義字符這個(gè)概念,是有前提條件的。
“在字符串類(lèi)型的數(shù)據(jù)的字面值中”才有必要使用轉(zhuǎn)義字符。
剩下的就是具體寫(xiě)法了。
var s = 'I\'m ok!';