ES6 2

4.延展參數(shù)處理 Extended Parameter Handling

這部分內(nèi)容主要針對(duì)的是函數(shù)傳值形參的變化,主要是形參默認(rèn)值和Rest參數(shù)
首先是形參帶默認(rèn)值比較好理解,就是在定義函數(shù)的時(shí)候給形參一個(gè)默認(rèn)值

function test(x, y = 7, z = 42) { 
    return x + y + z;
}

這樣y和z就有一個(gè)初始的默認(rèn)值,這個(gè)比較簡單,也比較常用

接下來要說Rest參數(shù)首先要先說一個(gè)耳熟能詳?shù)膶?duì)象arguments
這個(gè)對(duì)象的使用跟數(shù)組使用基本一致,也是通過下標(biāo)來訪問,也一度讓我認(rèn)為,這個(gè)屌絲的屬性是一個(gè)數(shù)組,但是遺憾的是,這屌絲屬性是一個(gè)對(duì)象

function test(){
    console.log(arguments);
    console.log(typeof arguments);
   }
test(1, 2, 3, 4);
// 打印結(jié)果
[1, 2, 3, 4]
object

調(diào)用傳值和形參個(gè)數(shù)不對(duì)等的時(shí)候,或者回調(diào)函數(shù)不明確回調(diào)的參數(shù)的時(shí)候arguments這個(gè)屬性確實(shí)好用,能幫助使用者快速的熟悉并使用函數(shù),在ES6之后,有了Rest參數(shù)

function test(x, y, ...a){
    console.log("x :"+x + ";y :"+y);
    console.log(a);
    console.log(typeof a);
   }
   test(1, 2, 3, 4);
// 打印結(jié)果
x :1;y :2
[3, 4]
object

形參x,y都被賦值,剩下的多余的值,統(tǒng)一放到另一個(gè)形參a上,只是,這個(gè)形參前有"...",那"...a"就是Rest參數(shù),這個(gè)參數(shù)也是一個(gè)對(duì)象,用法也是和數(shù)組一樣.

當(dāng)然了,這個(gè)Rest參數(shù)還有其他的用法,比如能拆分字符串,拆分成一個(gè)數(shù)組,每個(gè)元素是字符串對(duì)應(yīng)字符

var str = "test";
// ES6
var arr = [...str];

// ES5
var arr = str.split("");
console.log(arr);
// 結(jié)果
["t", "e", "s", "t"]

也能用在兩個(gè)數(shù)組的拼接

var arr1 = ["吳用", "公孫勝", "關(guān)勝"];
// ES6
var arr2 = ["宋江", "盧俊義", ...arr1];
// ES5
var arr2 = ["宋江", "盧俊義"].concat(arr1);
console.log(arr2);
// 打印結(jié)果
["宋江", "盧俊義", "吳用", "公孫勝", "關(guān)勝"]

相對(duì)能簡單一點(diǎn),這就是Rest參數(shù)的用法

5.模板字符串 Template Literals

(1).字符串填補(bǔ) String Interpolation
這部分主要是對(duì)字符串進(jìn)行插入的變化,以前字符串拼接都用"+", 把每一個(gè)要拼接的字符串都拼接起來,對(duì)很多初學(xué)者來講,很難,而且非常不靈活,在ES6提出了一種新的拼接方法,這種方法使用類似PHP的字符串的拼接

var stu = {
    name: "張三",
    num:17
}
var score = {
    english : 100,
    math : 80
}
var message = \`Hello ${stu.name}, 學(xué)號(hào):${stu.num} ,數(shù)學(xué): ${score.math}, 英語:${score.english}\`;
console.log(message);
// 打印結(jié)果
Hello 張三, 學(xué)號(hào):17 ,數(shù)學(xué): 80, 英語:100

這種寫法照比之前用"+"憑借確實(shí)節(jié)省代碼,但是不同于PHP的拼接,JS的這種寫法既不是單引號(hào)也不是雙引號(hào),而是``,就是鍵盤上1那個(gè)按鍵左邊的按鍵,反引號(hào)`,所以使用的時(shí)候需要注意一下,如果不是對(duì)應(yīng)符號(hào),沒有效果.

(2)自定義插值 Custom Interpolation
在函數(shù)傳值上也發(fā)生了變化

function get(){
console.log(arguments);
}
var str1 = "1111";
var str2 = "3333";
// ES5
get([ "http://example.com/foo?str1=", "&str2=", "" ],str1, str2);
// ES6
get\`http://example.com/foo?str1=${str1}&str2=${str2}\`;

函數(shù)調(diào)用有了很大的變化,這兩種寫法arguments打印出來的內(nèi)容相同,第一個(gè)參數(shù)是一個(gè)數(shù)組,后兩個(gè)參數(shù)是str1和str2兩個(gè)字符串的內(nèi)容,因?yàn)閚ode.js完全兼容ES6的寫法,所以見到這種寫法需要認(rèn)識(shí).

(3)Raw String Access 原始字符串的訪問
在模板字符串里,有了一個(gè)新的方法,String.raw(),這是一個(gè)靜態(tài)方法,他用于獲取模板字符串的原始字符串形式.

console.log(String.raw \`foo\n${42}bar\`); 
console.log(\`foo\n${42}bar\`);
console.log(String.raw\`Hi\u000A!\`);
console.log(\`Hi\u000A!\`);

第一個(gè)打印會(huì)把模板字符串原樣的打印出來,也就是\n不會(huì)進(jìn)行換行操作,第二個(gè)打印則會(huì)\n進(jìn)行換行操作,下面的例子也差不多.下面的例子是模板字符串作為參數(shù).

function test() {
    console.log(arguments);
    console.log(arguments[0]); // ["foo", "bar", raw: Array[2]]
}
test \`foo${ 42 }bar\`;

打印arguments之后,arguments分為兩部分,第一部分是一個(gè)數(shù)組,第二部分是42這個(gè)值,打印第一個(gè)參數(shù)數(shù)組,多個(gè)了raw,這個(gè)raw也是一個(gè)數(shù)組.用法如下:

function test(result, ...val) {
    console.log(result[0]);
    console.log(result.raw[0]); // 結(jié)果相同
    console.log(val[0]) // 42
}
test `foo${ 42 }bar`;

6.擴(kuò)展字符串 Extended Literals

這部分主要是進(jìn)制和Unicode這部分的功能性的擴(kuò)展
(1)二進(jìn)制和八進(jìn)制字符串 Binary & Octal Literal

// ES6
// 二進(jìn)制
console.log(0b111110111);
// 八進(jìn)制
console.log(0o767);
// ES5
parseInt("111110111", 2);
parseInt("767", 8);

ES5可以在parseInt的第二個(gè)參數(shù)設(shè)置進(jìn)制,16進(jìn)制也可以.

(2)Unicode字符串和正則表達(dá)式 Unicode String & RegExp Literal
Unicode中的中文有20902字,范圍在4E00-9FA5之間,用法"\u4E00",內(nèi)容就是"一",在ES6里能直接使用16進(jìn)制的數(shù)找到對(duì)應(yīng)的字符

"??".codePointAt(0);
"??" === "\u{20BB7}";

這部分沒有什么太多的東西

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末叁温,一起剝皮案震驚了整個(gè)濱河市冕屯,隨后出現(xiàn)的幾起案子烫沙,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件回季,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)供填,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來罢猪,“玉大人近她,你說我怎么就攤上這事∩排粒” “怎么了粘捎?”我有些...
    開封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長危彩。 經(jīng)常有香客問我攒磨,道長,這世上最難降的妖魔是什么恬砂? 我笑而不...
    開封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任咧纠,我火速辦了婚禮,結(jié)果婚禮上泻骤,老公的妹妹穿的比我還像新娘漆羔。我一直安慰自己,他們只是感情好狱掂,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開白布演痒。 她就那樣靜靜地躺著,像睡著了一般趋惨。 火紅的嫁衣襯著肌膚如雪鸟顺。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音讯嫂,去河邊找鬼蹦锋。 笑死,一個(gè)胖子當(dāng)著我的面吹牛欧芽,可吹牛的內(nèi)容都是我干的莉掂。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼千扔,長吁一口氣:“原來是場噩夢啊……” “哼憎妙!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起曲楚,我...
    開封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤厘唾,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后龙誊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體抚垃,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年载迄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了讯柔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡护昧,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出粗截,到底是詐尸還是另有隱情惋耙,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布熊昌,位于F島的核電站绽榛,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏婿屹。R本人自食惡果不足惜灭美,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望昂利。 院中可真熱鬧届腐,春花似錦、人聲如沸蜂奸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽扩所。三九已至围详,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間祖屏,已是汗流浹背助赞。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來泰國打工买羞, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人雹食。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓哩都,卻偏偏與公主長得像,于是被迫代替她去往敵國和親婉徘。 傳聞我的和親對(duì)象是個(gè)殘疾皇子漠嵌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對(duì)象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,212評(píng)論 0 4
  • ECMAScript 6(以下簡稱ES6)是JavaScript語言的下一代標(biāo)準(zhǔn)。因?yàn)楫?dāng)前版本的ES6是在2015...
    芹菜斯_嘉麗閱讀 262評(píng)論 0 1
  • 使用簡書第一天盖呼,心血來潮下載儒鹿,不知道能堅(jiān)持多少天。 高中大學(xué)時(shí)期還能堅(jiān)持寫日記几晤,畢業(yè)后動(dòng)筆都成了難上加難得事情约炎。 ...
    且北閱讀 85評(píng)論 0 0
  • ABO 血型由紅細(xì)胞表面的ABO 抗原決定。 A 型血母親紅細(xì)胞表面抗原為A(AO/AA),血清中抗體為anti-...
    Max狗狗狗閱讀 778評(píng)論 0 2
  • 書蟹瘾,可以不急于一時(shí)讀完圾浅,甚至有的書擱了許多年再看也沒關(guān)系。 許多需要多讀憾朴、細(xì)讀的好書狸捕,我都是直接買來看的。以至于現(xiàn)...
    寒甕閱讀 393評(píng)論 0 0