ECMAScript 6入門(1)

ECMAScript 6標(biāo)準(zhǔn)(簡稱ES6)是JavaScript的下一個(gè)版本混巧,在原來的基礎(chǔ)上新增加了很多強(qiáng)大的功能,首先勤揩,在學(xué)習(xí)ES6之前請大家自行升級(jí)自己的瀏覽器咧党,因?yàn)榘姹咎爬系臑g覽器是無法運(yùn)行新版本的JavaScript代碼的。好了陨亡,今天我們來看一下它都有哪些特性傍衡。

`...`: 表示多行字符串,功能類似于\n

alert(`多
行
字
符
串`)负蠕;

Map

JavaScript的對象有個(gè)小問題蛙埂,就是鍵必須是字符串。但實(shí)際上Number或者其他數(shù)據(jù)類型作為鍵也是非常合理的遮糖。為了解決這個(gè)問題绣的,最新的ES6規(guī)范引入了新的數(shù)據(jù)類型Map:它是一組鍵值對的結(jié)構(gòu),具有極快的查找速度。

 var score = new Map([["惠皎",100],["史振濤",59],["童靜",99]]);

Map具有以下方法:

get:通過鍵名獲取它的值屡江,如果沒有芭概,則返回undefined

score.get("惠皎");

set:添加新的key-value

score.set("余鵬舉",67);

has:查看是否存在key,返回值是true or false

 score.has("惠皎");   

delete:刪除key

score.delete("史振濤");

說明:由于一個(gè)Key只能對應(yīng)一個(gè)Value惩嘉,所以多次對一個(gè)Key放入Value時(shí)罢洲,后面的Value會(huì)將前面的Value覆蓋。

Set

Set和Map類似文黎,也是Key的集合惹苗,但不存儲(chǔ)value。由于key不能重復(fù)耸峭,所以在Set中沒有重復(fù)的key桩蓉,重復(fù)元素在Set中自動(dòng)被過濾。

 var num = new Set([1,2,3,3,"3"]);      // 1,2,3,"3"

Set具有以下方法:

add:添加key劳闹,且每次只能傳一個(gè)值

 num.add(4);               // 1,2,3,"3",4

delete:刪除key

 num.add(3);               // 1,2,"3",4

iterable

遍歷Array可以采用下標(biāo)循環(huán)触机,遍歷Map和Set就無法使用下標(biāo)。為了統(tǒng)一集合類型玷或,ES6標(biāo)準(zhǔn)引入了新的iterable類型,Array片任、Map和Set都屬于iterable類型偏友,具有iterable類型的集合可以通過for ... of循環(huán)來遍歷。

var a = [1,2,3,4];
for(var x of a){
  alert(x);               //會(huì)依次彈出1,2,3,4
}

你可能會(huì)有疑問对供,for ... of循環(huán)和for ... in循環(huán)有何區(qū)別位他?
for ... in循環(huán)由于歷史遺留問題,它遍歷的實(shí)際上是對象的屬性名稱产场。一個(gè)Array數(shù)組實(shí)際上也是一個(gè)對象鹅髓,它的每個(gè)元素的索引被視為一個(gè)屬性,當(dāng)我們手動(dòng)給Array對象添加了額外的屬性后京景,for ... in循環(huán)會(huì)將給Array添加的屬性一起遍歷窿冯。

...rest

由于JavaScript函數(shù)允許接收任意個(gè)參數(shù),于是我們就不得不用arguments來獲取所有參數(shù)确徙。

function selectRest(a, b) {
  var i, rest = [];
  if (arguments.length > 2) {
    for (i = 2; i<arguments.length; i++) {
      rest.push(arguments[i]);}
    }
   console.log('a = ' + a); 
   console.log('b = ' + b);
   console.log(rest);
}

為獲取除了已定義參數(shù)a醒串、b之外的參數(shù)不得不用arguments,循環(huán)要從索引2開始以便排除前兩個(gè)參數(shù)鄙皇,這種寫法很別扭芜赌,只是為了獲得額外的rest參數(shù),有沒有更好的方法伴逸?為了解決這一問題缠沈,ES6標(biāo)準(zhǔn)引入了rest參數(shù)。上面的函數(shù)可以改寫為:

function selectRest(a,b,...rest){
  console.log("a = "+a);
  console.log("b = "+b);
  console.log(rest);
}
selectRest(1,2,3,4,5,6);

rest參數(shù)只能寫在最后,前面用...標(biāo)識(shí)洲愤。從運(yùn)行結(jié)果可知颓芭,傳入的參數(shù)先綁定a和b,多余的參數(shù)以數(shù)組形式交給變量rest禽篱,所以畜伐,不再需要arguments我們就獲取了全部參數(shù)。

let和const

JavaScript的變量作用域?qū)嶋H上是函數(shù)內(nèi)部躺率,在for循環(huán)等語句塊中無法定義具有局部作用域的變量玛界。

function add() {
  var sum = 0;
  for (var i = 0; i < 10; i++) {
    sum += i;
  }
  i += 1;
  return i;
}
console.log(add());          // 會(huì)打印11

為解決塊級(jí)作用域,ES6引入了新關(guān)鍵字let悼吱,用let替代var可以申明塊級(jí)作用域的變量:

function add1() {
  var sum = 0;
  for (let i = 0; i < 10; i++) {
    sum += i;
  }
  i += 1;
  return i;
}
console.log(add1());      // 報(bào)錯(cuò)

var和let申明的是變量慎框,如果要申明一個(gè)常量,在ES6之前是不行的后添。ES6標(biāo)準(zhǔn)引入了新的關(guān)鍵字const來定義常量笨枯,const與let都具有塊級(jí)作用域。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末遇西,一起剝皮案震驚了整個(gè)濱河市馅精,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌粱檀,老刑警劉巖洲敢,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異茄蚯,居然都是意外死亡压彭,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門渗常,熙熙樓的掌柜王于貴愁眉苦臉地迎上來壮不,“玉大人,你說我怎么就攤上這事皱碘⊙唬” “怎么了?”我有些...
    開封第一講書人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵癌椿,是天一觀的道長家凯。 經(jīng)常有香客問我,道長如失,這世上最難降的妖魔是什么绊诲? 我笑而不...
    開封第一講書人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮褪贵,結(jié)果婚禮上掂之,老公的妹妹穿的比我還像新娘抗俄。我一直安慰自己,他們只是感情好世舰,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開白布动雹。 她就那樣靜靜地躺著,像睡著了一般跟压。 火紅的嫁衣襯著肌膚如雪胰蝠。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評(píng)論 1 305
  • 那天震蒋,我揣著相機(jī)與錄音茸塞,去河邊找鬼。 笑死查剖,一個(gè)胖子當(dāng)著我的面吹牛钾虐,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播笋庄,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼效扫,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了直砂?” 一聲冷哼從身側(cè)響起菌仁,我...
    開封第一講書人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎静暂,沒想到半個(gè)月后济丘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡籍嘹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了弯院。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辱士。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖听绳,靈堂內(nèi)的尸體忽然破棺而出颂碘,到底是詐尸還是另有隱情,我是刑警寧澤椅挣,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布头岔,位于F島的核電站,受9級(jí)特大地震影響鼠证,放射性物質(zhì)發(fā)生泄漏峡竣。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一量九、第九天 我趴在偏房一處隱蔽的房頂上張望适掰。 院中可真熱鬧颂碧,春花似錦、人聲如沸类浪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽费就。三九已至诉瓦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間力细,已是汗流浹背睬澡。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留艳汽,地道東北人猴贰。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像河狐,于是被迫代替她去往敵國和親米绕。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355