第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

ES6掃盲:標(biāo)簽?zāi)0遄置媪?/span>

標(biāo)簽:
Node.js Html5 JavaScript

前言

最近在读《你不知道的js》下册,看到了关于标签模板字面量的内容,平常用的不多,比较陌生,相信也是大多数初学者会遇到的知识盲点。不过,平常不写是一码事,会不会是另一码事,在读别人代码的过程中也难免会遇到,知识不怕少,只怕不精。

基础示例

function foo(strings,...values){
	console.log(strings)
	console.log(values)
}
const desc='awesome'
foo`Everything is ${desc}!]`;
// ["Everything is ","!"]
// ["awesome"]

foo函数中strings是一个由所有普通字符串(插入表达式之间的部分)组成的数组。使用...gather/rest运算符,把所有参数值都收集到values中。

换一种说法也就是,values中的值是分隔符,就好像用它们连接了strings中的值,然后把他们都连接在一起,就得到了一个完整的字符串。

应用

上面的基础示例不能展现标签模板字面量的强大之处。一般情况,字符串字面量标签函数(上个示例中的foo)要计算出一个字符串并将其返回。

把目标字符串中的数值格式化为美元

function format(strings,...values){
    return strings.reduce((s,v,idx)=>{
        if(idx>0){
            const prev=values[idx-1]
            if(typeof prev==='number'){
                s+=`$${prev.toFixed(2)}`
            }else{
                s+=prev
            }
        }
        return s+v
    },'')

}

const item='orange'
const price=3.5554

const text=format`the ${item}'s price is ${price}`
console.log(text)
// the orange's price is $3.56

过滤HTML字符串,防止用户输入恶意内容

大部分的网站都提供有评论模块以供用户发表自己的观点,一般防止用户恶意输入,如<script>alert('恶意代码')</script>,都会把<替换为&lt;;把>替换为&gt;

function filterSpitefulCode(strings,...values){
   return strings.reduce((s,v,idx)=>{
       if(idx>0){
           const prev=values[idx-1].replace(/</g,"&lt;")
           .replace(/>/g,"&gt;")
           s+=prev
       }
       return s+v
   },'')
}

const badCode= '<script>alert("abc")</script>'
const message=filterSpitefulCode`<p>${badCode} has been transformed safely~`

console.log(message)
// <p>&lt;script&gt;alert("abc")&lt;/script&gt; has been transformed safely~

原始字符串

在上面的代码中,标签函数接受第一个名为strings的参数,这是一个数组,也包括了一些额外的数据:所有字符串的原始未处理版本。可以像下面通过.raw属性访问这些原始字符串:

function showraw(strings,...values){
    console.log(strings.raw)
}

showraw`Hello\nWorld`
// ["Hello\nWorld"]
console.log(`Hello\nWorld`)
// Hello
// World

原始版本的值保留了原始的转义码\n序列,而处理过的版本把它当作是一个单独的换行符。

参考链接

點(diǎn)擊查看更多內(nèi)容
5人點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
Web前端工程師
手記
粉絲
6416
獲贊與收藏
192

關(guān)注作者,訂閱最新文章

閱讀免費(fèi)教程

感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消