ES6 字符串模板方法

2019-03-08 22:23:2006:04 1459
所屬專輯:javascript面試題
聲音簡介



【1、字符串模板方法】
傳統(tǒng)的 JavaScript 語言,輸出模板是使用+拼接的,或則使用replace替換的
1、"<span>"+user.name+"</span>"
2、"<span>#name</span>" .replace("name",user.name);


這種寫法相當(dāng)繁瑣不方便,ES6 引入了模板字符串解決這個(gè)問題


模板字符串是增強(qiáng)版的字符串,用反引號(`)標(biāo)識。
它可以當(dāng)作普通字符串使用,也可以用來定義多行字符串,或者在字符串中嵌入變量。
   模板字符串中嵌入變量,需要將變量名寫在${}之中
    比如   var  user={name:"tom"};
    在末班字符串中輸出   `hello word ${user.name} `

   ${}大括號內(nèi)部可以放入任意的 JavaScript 表達(dá)式,可以進(jìn)行運(yùn)算,以及引用對象屬性。模板字符串之中還能調(diào)用函數(shù)。
   
   模板字符串可以表示多行字符串,所有的空格和縮進(jìn)都會被保留在輸出之中。你不想要這個(gè)換行,可以使用trim方法消除它
   
【2、標(biāo)簽?zāi)0濉?br />   模板字符串可以緊跟在一個(gè)函數(shù)名后面,該函數(shù)將被調(diào)用來處理這個(gè)模板字符串。這被稱為“標(biāo)簽?zāi)0濉?br />   比如  alert(123) 使用標(biāo)簽?zāi)0?可以寫成  alert`123`   
   
   標(biāo)簽?zāi)0迤鋵?shí)不是模板,而是函數(shù)調(diào)用的一種特殊形式。“標(biāo)簽”指的就是函數(shù),緊跟在后面的 模板字符串 就是它的參數(shù).
   
   但是,如果模板字符里面有變量,就不是簡單的調(diào)用了,而是會將 模板字符串 先處理成多個(gè)參數(shù),再調(diào)用函數(shù)。
     let a = 5;let b = 10;
handler `Hello ${ a + b } world ${ a * b } tom`;    =  handler(['Hello ', ' world ', 'tom'], 15, 50);
    
    第一個(gè)參數(shù)是一個(gè)數(shù)組,該數(shù)組的成員是模板字符串中那些沒有變量替換的部分    
    其他參數(shù),都是模板字符串各個(gè)變量被替換后的值。             剛才例子中,模板字符串含有兩個(gè)變量,因此tag會接受到value1和value2兩個(gè)參數(shù)。
 
   
String.raw()
    
   String.raw方法,往往用來充當(dāng)模板字符串的處理函數(shù),返回一個(gè)斜杠都被轉(zhuǎn)義(斜杠前面再加一個(gè)斜杠)的字符串,對應(yīng)于替換變量后的模板字符串。
   var  shuchu=`Hi\n${2+3}!`;
   //換行已經(jīng)沒有了   Hi
                    5
   
   // 返回 "Hi\\n5!"
   
   如果原字符串的斜杠已經(jīng)轉(zhuǎn)義,那么String.raw會進(jìn)行再次轉(zhuǎn)義。
   可以作為處理模板字符串的基本方法,它會將所有變量替換,而且對斜杠進(jìn)行轉(zhuǎn)義,方便下一步作為字符串來使用.
   





用戶評論

表情0/300

itwangyang520

老是,這個(gè)有沒有對應(yīng)的數(shù)據(jù)呀,這樣邊看,你邊講,邊敲,這樣效果更好

音頻列表
猜你喜歡
文玩珠串設(shè)計(jì)教程模板

不管你是文玩小白不管你是文玩骨灰級玩家這里都有你借鑒之處,孜慕免費(fèi)為關(guān)注的粉絲設(shè)計(jì)搭配

by:孜慕

猶太人的故事:尋找失落的字符

適聽人群:對猶太歷史感興趣的讀者。橫跨了幾千年時(shí)間和幾個(gè)大洲——從埃及到希臘;從阿拉伯到基督教世界;從印度到安達(dá)盧西亞;從開羅的集市到牛津的大街;從三大宗教的...

by:多云下的蛋

Java服務(wù)器端模板引擎_細(xì)說Thymeleaf模板引擎技術(shù)

Java技術(shù)交流qun:234446703驗(yàn)證消息:喜馬拉雅(群里也可獲取源碼資料哦)或者:+v號java1060Thymeleaf是一種服務(wù)器端Java模...

by:動力節(jié)點(diǎn)教育

申論萬能模板

來源遴選的柚子

by:溪俞xy

木葉之科技模板

總推薦宇智波帶土:第五次忍界大戰(zhàn),現(xiàn)在開始。旁白:為什么是第五次。宇智波帶土:因?yàn)橛袀€(gè)狠人一個(gè)人就打了第四次忍界大戰(zhàn)。我一個(gè)人便是戰(zhàn)爭,穿越在忍者的世界,打科技...

by:宋江看上了黛玉

北方曲藝:反串

說是反串,其實(shí)也不都是反串,有的作品是演員演唱年輕時(shí)的本功

by:志揚(yáng)小盆友