最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2017年08月03日 08:19:14   投稿:jingxian  
下面小編就為大家?guī)硪黄猠s6 字符串String的擴(kuò)展(實(shí)例講解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

新特性:模板字符串

傳統(tǒng)字符串

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

es6簡潔的字符串拼接

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?/strong>

這里的模板指的是上面講的字符串模板,用反引號(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í)例講解)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 微信小程序網(wǎng)絡(luò)請(qǐng)求模塊封裝的具體實(shí)現(xiàn)

    微信小程序網(wǎng)絡(luò)請(qǐng)求模塊封裝的具體實(shí)現(xiàn)

    大家做小程序項(xiàng)目的時(shí)候肯定會(huì)遇到數(shù)據(jù)對(duì)接需求,下面這篇文章主要給大家介紹了關(guān)于微信小程序網(wǎng)絡(luò)請(qǐng)求模塊封裝的具體實(shí)現(xiàn),文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03
  • range 標(biāo)準(zhǔn)化之獲取

    range 標(biāo)準(zhǔn)化之獲取

    range 是用戶選擇區(qū)域的唯一表示方法,存在 w3c 的標(biāo)準(zhǔn)化 range ,以及 ie 特有的 textrange 與 controlrange ,相對(duì)于 ie ,w3c 的概念更易于理解,首先簡要介紹一下 w3c range.
    2011-08-08
  • js實(shí)現(xiàn)七夕表白彈幕效果 jQuery實(shí)現(xiàn)彈幕技術(shù)

    js實(shí)現(xiàn)七夕表白彈幕效果 jQuery實(shí)現(xiàn)彈幕技術(shù)

    這篇文章主要介紹了js實(shí)現(xiàn)七夕表白彈幕效果,jQuery實(shí)現(xiàn)彈幕技術(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • JavaScript生成簡單等差數(shù)列

    JavaScript生成簡單等差數(shù)列

    本文給大家分享使用for循環(huán)實(shí)現(xiàn)js生成簡單的等差數(shù)列,具體實(shí)現(xiàn)方法,大家參考下本文
    2017-11-11
  • 用函數(shù)式編程技術(shù)編寫優(yōu)美的 JavaScript_ibm

    用函數(shù)式編程技術(shù)編寫優(yōu)美的 JavaScript_ibm

    函數(shù)式編程語言在學(xué)術(shù)領(lǐng)域已經(jīng)存在相當(dāng)長一段時(shí)間了,但是從歷史上看,它們沒有豐富的工具和庫可供使用。隨著 .NET 平臺(tái)上的 Haskell 的出現(xiàn),函數(shù)式編程變得更加流行。一些傳統(tǒng)的編程語言,例如 C++ 和 JavaScript,引入了由函數(shù)式編程提供的一些構(gòu)造和特性。在許多情況下,JavaScript 的重復(fù)代碼導(dǎo)致了一些拙劣的編碼。如果使用函數(shù)式編程,就可以避免這些問題。此外,可以利用函數(shù)式編程風(fēng)格編寫更加優(yōu)美的回調(diào)。
    2008-05-05
  • Javascript中的對(duì)象和原型(二)

    Javascript中的對(duì)象和原型(二)

    這篇文章給大家介紹了js中的對(duì)象和原型,從工廠模式,構(gòu)造函數(shù)方面展開話題,介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-08-08
  • js Calender控件使用詳解

    js Calender控件使用詳解

    這篇文章主要介紹了js Calender控件使用詳解,需要的朋友可以參考下
    2015-01-01
  • 微信小程序通過websocket實(shí)時(shí)語音識(shí)別的實(shí)現(xiàn)代碼

    微信小程序通過websocket實(shí)時(shí)語音識(shí)別的實(shí)現(xiàn)代碼

    這篇文章主要介紹了微信小程序通過websocket實(shí)時(shí)語音識(shí)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • 詳解JavaScript對(duì)象轉(zhuǎn)原始值

    詳解JavaScript對(duì)象轉(zhuǎn)原始值

    這篇文章主要為大家介紹了vue組件通信的幾種方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • 微信小程序 導(dǎo)入圖標(biāo)實(shí)現(xiàn)過程詳解

    微信小程序 導(dǎo)入圖標(biāo)實(shí)現(xiàn)過程詳解

    這篇文章主要介紹了微信小程序 導(dǎo)入圖標(biāo)實(shí)現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10

最新評(píng)論

卓尼县| 盐边县| 封开县| 鸡西市| 彰武县| 鸡西市| 涞源县| 甘德县| 金平| 彰武县| 水城县| 巢湖市| 浦东新区| 阳原县| 鲁山县| 法库县| 揭阳市| 苏州市| 凌云县| 阜平县| 永年县| 峡江县| 昭觉县| 兴安县| 石楼县| 亳州市| 黄骅市| 苏尼特左旗| 海晏县| 黎川县| 开化县| 资溪县| 时尚| 泰来县| 桐柏县| 永昌县| 洪雅县| 菏泽市| 宜黄县| 乌审旗| 成都市|