<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當(dāng)前位置: 首頁 - 科技 - 知識(shí)百科 - 正文

        es6 字符串String的擴(kuò)展(實(shí)例講解)

        來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 22:33:30
        文檔

        es6 字符串String的擴(kuò)展(實(shí)例講解)

        es6 字符串String的擴(kuò)展(實(shí)例講解):新特性:模板字符串 傳統(tǒng)字符串 let name = Jacky; let occupation = doctor; //傳統(tǒng)字符串拼接 let str = He is + name +,he is a + occupation; es6簡(jiǎn)潔的字符串拼接 let name = Jacky; let occupat
        推薦度:
        導(dǎo)讀es6 字符串String的擴(kuò)展(實(shí)例講解):新特性:模板字符串 傳統(tǒng)字符串 let name = Jacky; let occupation = doctor; //傳統(tǒng)字符串拼接 let str = He is + name +,he is a + occupation; es6簡(jiǎn)潔的字符串拼接 let name = Jacky; let occupat

        新特性:模板字符串

        傳統(tǒng)字符串

        let name = "Jacky";
        let occupation = "doctor";
         //傳統(tǒng)字符串拼接
        let str = "He is "+ name +",he is a "+ occupation;

        es6簡(jiǎn)潔的字符串拼接

        let name = "Jacky";
        let occupation = "doctor";
        //模板字符串拼接
        let str = `He is ${name},he is a ${occupation}`;

        對(duì)比兩段拼接的代碼,模板字符串使得我們不再需要反復(fù)使用雙引號(hào)(或者單引號(hào))了;而是改用反引號(hào)標(biāo)識(shí)符(`),插入變量的時(shí)候也不需要再使用加號(hào)(+)了,而是把變量放入${ }即可。

        使用時(shí)要注意

        1、可以定義多行字符串

        傳統(tǒng)的多行字符串寫法:

        let str = "write once ," +
         "run anywhere";

        模板字符串的寫法:

         let str = `write once ,
         run anywhere`;

        直接換行即可,但是要注意的是:所有的空格和所進(jìn)都會(huì)被保留在輸出中。如果控制臺(tái)輸出字符串str的話,代碼上換了行,控制臺(tái)輸出的時(shí)候也會(huì)換行。

        2、${ }中可以放任意的javascript表達(dá)式

        ${ }中可以是運(yùn)算表達(dá)式

        var a = 1;
        var b = 2;
        var str = `the result is ${a+b}`;
        //進(jìn)行加法運(yùn)算 結(jié)果:the result is 3

        ${ }中可以是對(duì)象的屬性

        var obj = {"a":1,"b":2};
        var str = `the result is ${obj.a+obj.b}`;
        //對(duì)象obj的屬性
        //結(jié)果:the result is 3.

        ${ }中可以是函數(shù)的調(diào)用

        function fn() {
        return 3;
        }
        var str = `the result is ${ fn() }`;
        //函數(shù)fn的調(diào)用,結(jié)果:the result is 3

        標(biāo)簽?zāi)0?/p>

        這里的模板指的是上面講的字符串模板,用反引號(hào)定義的字符串;而標(biāo)簽,則指的是一個(gè)函數(shù),一個(gè)專門處理模板字符串的函數(shù)。

        var name = "張三";
        var height = 1.8;
        
        tagFn`他叫${name},身高${height}米。`;
        //標(biāo)簽+模板字符串
        
        //定義一個(gè)函數(shù),作為標(biāo)簽
        function tagFn(arr,v1,v2){
        console.log(arr); 
        //結(jié)果:[ "他叫",",身高","米。" ]
        console.log(v1); 
        //結(jié)果:張三
        console.log(v2); 
        //結(jié)果:1.8
        }
        

        以上代碼有兩處要仔細(xì)講解的,首先是tagFn函數(shù),是我們自定義的一個(gè)函數(shù),它有三個(gè)參數(shù)分別是arr,v1,v2。函數(shù)tagFn的調(diào)用方式跟以往的不太一樣,以往我們使用括號(hào)( )表示函數(shù)調(diào)用執(zhí)行,這一次我們?cè)诤瘮?shù)名后面直接加上一個(gè)模板字符串,如下面的代碼:

        tagFn`他叫${name},身高${height}米。`;

        這樣就是標(biāo)簽?zāi)0澹憧梢岳斫鉃闃?biāo)簽函數(shù)+模板字符串,這是一種新的語法規(guī)范。

        接下來我們繼續(xù)看函數(shù)的3個(gè)參數(shù),從代碼的打印結(jié)果我們看到它們運(yùn)行后對(duì)應(yīng)的結(jié)果,arr的值是一個(gè)數(shù)組:[ "他叫" , ",身高" , "米。" ],而v1的值是變量name的值:“張三”,v2的值是變量height的值:1.8。

        你是否看出規(guī)律了:第一個(gè)參數(shù)arr是數(shù)組類型,它是內(nèi)容是模板字符串中除了${ }以外的其他字符,按順序組成了數(shù)組的內(nèi)容,所以arr的值是[ "他叫", ",身高" , "米。" ];第2,3個(gè)參數(shù)則是模板字符串中對(duì)應(yīng)次序的變量name和height的值。

        標(biāo)簽?zāi)0迨荅S6給我們帶來的一種新語法,它常用來實(shí)現(xiàn)過濾用戶的非法輸入和多語言轉(zhuǎn)換,這里不展開講解。因?yàn)橐坏┪覀冋莆樟藰?biāo)簽?zāi)0宓挠梅ê螅院缶涂梢院煤美盟倪@個(gè)特性,再根據(jù)自己的需求要來實(shí)現(xiàn)各種功能了。

        ES6新的String函數(shù)

        repeat( )函數(shù):將目標(biāo)字符串重復(fù)N次,返回一個(gè)新的字符串,不影響目標(biāo)字符串。

        var name1 = "王漢炎"; //目標(biāo)字符串
        var name2 = name1.repeat(3);
        //變量name1被重復(fù)三次;
        
        console.log(name1); 
        //結(jié)果:王漢炎
        
        console.log(name2);
        //結(jié)果:王漢炎王漢炎王漢炎
        

        includes( )函數(shù):判斷字符串中是否含有指定的子字符串,返回true表示含有和false表示未含有。第二個(gè)參數(shù)選填,表示開始搜索的位置。

        var name = "王漢炎";//目標(biāo)字符串
        name.includes('炎'); 
        //true, 含有
        
        name.includes('web'); 
        //false, 不含有
        
        name.includes('王',1); 
        //false, 從第2個(gè)字符開始搜索, 不含有
        

        傳統(tǒng)的做法我們可以借助indexOf( )函數(shù)來實(shí)現(xiàn),如果含有指定的字符串,indexOf( )函數(shù)就會(huì)子字符串首次出現(xiàn)的位置,不含有,則返回-1。我們通過返回值是否為-1來判斷字符串中是否含有指定的子字符串,但是,我們現(xiàn)在可以用includes( )函數(shù)代替indexOf( )函數(shù),因?yàn)樗姆祷刂蹈庇^(true或false),況且我們并不關(guān)心子字符串出現(xiàn)的位置。

        startsWith( )函數(shù):判斷指定的子字符串是否出現(xiàn)在目標(biāo)字符串的開頭位置,第二個(gè)參數(shù)選填,表示開始搜索的位置。

        var name = "王漢炎"; //目標(biāo)字符串
        
        name.startsWith('王'); 
        //true,出現(xiàn)在開頭位置
        
        name.startsWith('漢'); 
        //false,不是在開頭位置
        
        name.startsWith('漢',1); 
        //true,從第2個(gè)字符開始
        

        endsWith( )函數(shù):判斷子字符串是否出現(xiàn)在目標(biāo)字符串的尾部位置,第二個(gè)參數(shù)選填,表示針對(duì)前N個(gè)字符。

        var name = "我就是王漢炎";//目標(biāo)字符串
        
        name.endsWith('我');
        //false,不在尾部位置
        
        name.endsWith('炎'); 
        //true,在尾部位置
        
        name.endsWith('炎',5); 
        //false,只針對(duì)前5個(gè)字符
        
        name.endsWith('炎',6);
        //true,針對(duì)前6個(gè)字符
        

        javascript中,一個(gè)字符固定為2個(gè)字節(jié),對(duì)于那些需要4個(gè)字節(jié)存儲(chǔ)的字符,javascript會(huì)認(rèn)為它是兩個(gè)字符,此時(shí)它的字符長度length為2。如字符:"𠮷",就是一個(gè)需要4個(gè)字節(jié)存儲(chǔ),length為2的字符。這會(huì)有什么問題呢?對(duì)于4字節(jié)的字符, javascript無法正確讀取字符,我們來試試看。

        var str1 = "前端";
        var str2 = "𠮷";
        
        str1.length; //length為2
        str2.length; //length為2
        
        str1.charAt(0); //前
        str1.charAt(1); //端
        
        str2.charAt(0); //'�'
        str2.charAt(1); //'�'
        

        可以看到,str1和str2的長度length都是2,因?yàn)樽址?𠮷"是一個(gè)4字節(jié)的字符,使用charAt函數(shù)(charAt() 方法可返回指定位置的字符)能正確讀取字符串str1的字符,但無法正確讀取4個(gè)字節(jié)的字符,此時(shí)返回結(jié)果出現(xiàn)了亂碼。

        但是,如果我們使用ES6給我們提供的codePointAt( )函數(shù),就可以處理這種4個(gè)字節(jié)的字符了,我們來看看怎么使用

        var str = "𠮷";
        str.codePointAt(); //結(jié)果:134071

        對(duì)于這個(gè)長度length為2字符:"𠮷",codePointAt( )方法可以正確地識(shí)別出它是個(gè)4個(gè)字節(jié)的字符,并且能正確地返回它的碼點(diǎn)的十進(jìn)制數(shù):134071,這個(gè)數(shù)字抓換成16進(jìn)制就是20bb7,對(duì)應(yīng)的Unicode編碼則是\u20bb7。

        String.fromCodePoint( )函數(shù):函數(shù)的參數(shù)是一個(gè)字符對(duì)應(yīng)的碼點(diǎn),返回的結(jié)果就是對(duì)應(yīng)的字符,哪怕這個(gè)字符是一個(gè)4字節(jié)的字符,也能正確實(shí)現(xiàn)。

        正好可以利用上面得到的10進(jìn)制數(shù)字134071反推一下。

        String.fromCodePoint(134071); //結(jié)果:"𠮷"
        String.raw( )函數(shù);看函數(shù)名raw是未加工的的意思,正如這個(gè)函數(shù)的作用一樣:返回字符串最原始的樣貌,即使字符串中含有轉(zhuǎn)義符,它都視而不見,直接輸出。

         console.log(`hello\nworld`);
        //
        輸出:hello world console.log(String.raw`hello\nwolrd`); //輸出:hello\nwolrd

        總結(jié):ES6給字符串帶來了很多實(shí)用性的擴(kuò)展:模板字符串,標(biāo)簽?zāi)0澹瑀epeat函數(shù)、includes函數(shù),startsWith函數(shù),endsWith函數(shù),codePointAt函數(shù),String.fromCodePoint函數(shù),String.raw函數(shù)。

        以上這篇es6 字符串String的擴(kuò)展(實(shí)例講解)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        es6 字符串String的擴(kuò)展(實(shí)例講解)

        es6 字符串String的擴(kuò)展(實(shí)例講解):新特性:模板字符串 傳統(tǒng)字符串 let name = Jacky; let occupation = doctor; //傳統(tǒng)字符串拼接 let str = He is + name +,he is a + occupation; es6簡(jiǎn)潔的字符串拼接 let name = Jacky; let occupat
        推薦度:
        標(biāo)簽: 解析 擴(kuò)展 字符串
        • 熱門焦點(diǎn)

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲AV色欲色欲WWW| 亚洲日本久久久午夜精品| 中文字幕亚洲日本岛国片| 亚洲最大AV网站在线观看| 亚洲AV无码一区二区乱子伦| 亚洲视频中文字幕在线| 久久水蜜桃亚洲AV无码精品| 精品免费国产一区二区| 亚洲人成无码www久久久| 亚洲天堂一区在线| 日日摸夜夜添夜夜免费视频| 777爽死你无码免费看一二区 | baoyu777永久免费视频| 午夜精品射精入后重之免费观看 | 久久精品国产亚洲AV不卡| 2022国内精品免费福利视频| 亚洲免费观看网站| 伊人久久大香线蕉亚洲| 华人在线精品免费观看| 亚洲精品美女久久久久99小说| 激情五月亚洲色图| 亚洲免费观看视频| 亚洲视频免费在线播放| 全免费a级毛片免费看无码| 色视频在线观看免费| 日韩免费在线观看| 亚洲人成7777影视在线观看| 13小箩利洗澡无码视频网站免费 | 美女视频黄的全免费视频网站| 亚洲欧洲美洲无码精品VA| 国产亚洲美女精品久久| 成人性生免费视频| 亚洲视频小说图片| 成年人视频在线观看免费| 七次郎成人免费线路视频| 国产亚洲精品免费| 亚洲综合色婷婷在线观看| 亚色九九九全国免费视频| 一级毛片大全免费播放下载| 久久亚洲精品无码AV红樱桃| 无码人妻久久一区二区三区免费 |