轉(zhuǎn)義字符材蛛,編程萌新應(yīng)該都被這個(gè)概念困擾過醒颖。理解這個(gè)概念,需要抓住幾個(gè)要點(diǎn):
1.轉(zhuǎn)義字符的目的箫锤。
(1)為了解決編程語言中的字符含義沖突。
(2)為了表示一些本來不能用字符表示的含義雨女。
- 沖突的表現(xiàn)
編程語言元字符與字符串?dāng)?shù)據(jù)的沖突谚攒。
每種編程語言都有自己的元字符,包括關(guān)鍵字戚篙、運(yùn)算符等等五鲫。以javascript為例,逗號(hào)岔擂、分號(hào)位喂、“var”這些都是語言的元字符。
每種語言都會(huì)規(guī)定自己的數(shù)據(jù)類型的字面表示方法乱灵。比如塑崖,js中:
//這些字面值代表Number類型
123
1.1
//數(shù)組
var a = [1,2,3];
//對(duì)象
var b ={ name:'eleorc';age'18'};
關(guān)鍵點(diǎn),編程語言中都少不了一種叫做字符串的數(shù)據(jù)類型痛倚。
var c = 'hello';
var d = "world";
可以看到规婆,js中,字符串這種數(shù)據(jù)類型的表達(dá),需要使用成對(duì)的單引號(hào)或者雙引號(hào)字符抒蚜。也就是掘鄙,當(dāng)在js代碼中,出現(xiàn)成對(duì)的單引號(hào)或者雙引號(hào)嗡髓,js解釋器會(huì)把中間的字面值作為字符串?dāng)?shù)據(jù)處理操漠。
那么問題來了,如果字符串?dāng)?shù)據(jù)中饿这,需要表達(dá)單引號(hào)或者雙引號(hào)這個(gè)字符浊伙,改怎么辦呢?
這個(gè)問題可以概括為:在字符串?dāng)?shù)據(jù)中需要表達(dá)限定字符串邊界的元字符长捧,改怎么辦嚣鄙?
我們不能簡(jiǎn)單使用這個(gè)字符的字面值,因?yàn)檫@個(gè)字符已經(jīng)被編程語言賦予了含義(限定字符串邊界)串结。如果簡(jiǎn)單的在兩個(gè)單引號(hào)中哑子,在寫一個(gè)單引號(hào),那么js解釋器該如何匹配字符邊界呢奉芦?
//存在邏輯混亂的寫法赵抢,也許人類可以看懂,但解釋器不能声功。
var s = 'I'm OK;'
因此烦却,需要用另外的字面值來代表字符串限定符號(hào)。
反斜線先巴,在字符串中其爵,被賦予了特殊的含義。
請(qǐng)注意轉(zhuǎn)義字符這個(gè)概念伸蚯,是有前提條件的摩渺。
“在字符串類型的數(shù)據(jù)的字面值中”才有必要使用轉(zhuǎn)義字符。
剩下的就是具體寫法了剂邮。
var s = 'I\'m ok!';