es6快速入门(1)

1. let 声明变量

var声明变量作用域,最近的函数或者全局
letvar的细微差别在于let作用域在包含它块内(for,if,else, whiletry-catch)。
详细阅读《ES6块级作用域及新变量声明(let)

代码示例:

if(true) {
   let x = 1;
}
console.log(x); // undefined
function getVal(boo) {
    if (boo) {
        let val = 'red'
        // ...
        return val
    } else {
        // 这里访问不到 val
        return null
    }
    // 这里也访问不到 val
}

2. const声明只读变量

const可以声明一个只读的值

const MY_CONSTANT = 1;
MY_CONSTANT = 2 // Error 只读不可以再赋值
const SOME_CONST; // Error 声明必须赋值
const MY_OBJECT = {some: 1};
MY_OBJECT.some = 'body'; // Cool 对于对象赋值可以改变属性值
MY_OBJECT.a = 'a' //ok
MY_OBJECT = 'body' // Error 不可以再赋值

3.箭头函数

不解释看代码:

let books = [{title: 'X', price: 10}, {title: 'Y', price: 15}];

// ES5的写法:
var titles = books.map(function(item) {
   return item.title;
});

// ES6的写法:
let titles = books.map( item => item.title );
// ES5的写法:
var book = {
   title: 'X',
   sellers: ['A', 'B'],
   printSellers: function() {
      var that = this;
      this.sellers.forEach(function(seller) {
         console.log(seller + ' sells ' + that.title)
      })
   }
}
// ES6的写法:
let book = {
   title: 'X',
   sellers: ['A', 'B'],
   printSellers() {
      this.sellers.forEach(seller => console.log(seller + ' sells ' + this.title));
   }
}

箭头函数参数

//没有参数
books.map( () => 1 ); // [1, 1]
//多个参数
[1,2].map((n, index) => n * index); // [0, 2]

more

ES6箭头函数(Arrow Functions)
解读ECMAScript 6箭头函数

4. 推荐入门书目

ECMAScript 6入门

推荐阅读更多精彩内容