在ES2015裡面,幾個比較大的改變Part1
Arrow Function
人真的可以在懶惰一點,為了不要寫__function__這幾個字,就有 ()=>{} 的出現。這就是Arror Function
跟Lambda的表示法很像, 真的用法也是跟那個一樣
1 2 3 4 5 6 7 8 9 10 11 12
   | // Old var old = function(n) {     return n * n; };
  // with Arror Functions express 1 let new_1 = (n) => n * n;
  // with arror function express 2 let new_2 = (n) => { 	return n * n; };
   | 
 
另外一個要注意的是Arrow Scope的問題,
1 2 3 4 5 6 7 8 9 10 11 12
   | var hendrik = {     this.name = "Hendrik";          sayHello: (names) => {         names.forEach((name)=>{           console.log(`${this.name} greets ${name}`);         });     } } hendrik.sayHello(['frikkie']); // output  // hendrik greets frikkie
  | 
 
String templates
最快樂的事情非屬這個, 文字串的組合可以用 ` (鍵盤左上角流水符號的那個鍵), 可以讓你多行編輯文字字串
在配合 ${變數} 來將變數顯示在文字裡面。 這樣子就不用一堆的 『加號』 來串文字了,超快樂的
1 2 3 4 5 6 7 8 9 10 11
   | // old function sayHello(name, surname){     console.log('hello there ' + name + ' ' + surname + ', the time is now ' + new Date()); }
  // new way  function sayHello_new(name, surname){     console.log(`hello there ${name} ${surname},      the time is now ${new Date()}`); }
 
   | 
 
FYI: 新版的C#/VB.net也有將此功能加入,已經可以不用string.format + 無數的{流水號}了
Let
非常重要 要將使用var來定義變數的改用let來定義變數, 這樣子就可以避免同樣名稱的變數在不同的scope被覆蓋的情形發生
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
   | //=== old ===  var       name = 'Fido',      breed = 'schnauzer',      owners = ['Hendrik', 'Alice']  ;    console.log(name + '(' + breed + '):');    for(var i = 0; i < owners.length; i++){      var name = owners[i];        console.log('Owner ' + name); }
  console.log(name); //output // Fido(schnauzer): // Owner Hendrik // Owner Alice // Alice (被改變掉了)
  //=== new === let fname = 'Fido',     breed = 'schnauzer',     owners = ['Hendrik', 'Alice'] ;
  console.log(`${fname} (${breed}):`);
  for(let i = 0; i < owners.length; i++){     let fname = owners[i];     console.log(`Owner ${fname}`); }
  console.log(fname); // output: // Fido (schnauzer): // Owner Hendrik // Owner Alice // Fido
   | 
 
const
常數,當變數一旦被指定為const時,就不可以被改變了
1 2 3 4
   | const pi = Math.PI;
  pi = 123; // this will cause error message
   |