1. let 聲明變量
var
聲明變量作用域,最近的函數(shù)或者全局
let
與var
的細(xì)微差別在于let
作用域在包含它塊內(nèi)(for
,if
,else
, while
捎泻,try-catch
)酥夭。
詳細(xì)閱讀《ES6塊級(jí)作用域及新變量聲明(let)》
代碼示例:
if(true) {
let x = 1;
}
console.log(x); // undefined
function getVal(boo) {
if (boo) {
let val = 'red'
// ...
return val
} else {
// 這里訪問(wèn)不到 val
return null
}
// 這里也訪問(wèn)不到 val
}
2. const聲明只讀變量
const
可以聲明一個(gè)只讀的值
const MY_CONSTANT = 1;
MY_CONSTANT = 2 // Error 只讀不可以再賦值
const SOME_CONST; // Error 聲明必須賦值
const MY_OBJECT = {some: 1};
MY_OBJECT.some = 'body'; // Cool 對(duì)于對(duì)象賦值可以改變屬性值
MY_OBJECT.a = 'a' //ok
MY_OBJECT = 'body' // Error 不可以再賦值
3.箭頭函數(shù)
不解釋看代碼:
let books = [{title: 'X', price: 10}, {title: 'Y', price: 15}];
// ES5的寫(xiě)法:
var titles = books.map(function(item) {
return item.title;
});
// ES6的寫(xiě)法:
let titles = books.map( item => item.title );
// ES5的寫(xiě)法:
var book = {
title: 'X',
sellers: ['A', 'B'],
printSellers: function() {
var that = this;
this.sellers.forEach(function(seller) {
console.log(seller + ' sells ' + that.title)
})
}
}
// ES6的寫(xiě)法:
let book = {
title: 'X',
sellers: ['A', 'B'],
printSellers() {
this.sellers.forEach(seller => console.log(seller + ' sells ' + this.title));
}
}
箭頭函數(shù)參數(shù)
//沒(méi)有參數(shù)
books.map( () => 1 ); // [1, 1]
//多個(gè)參數(shù)
[1,2].map((n, index) => n * index); // [0, 2]
more
ES6箭頭函數(shù)(Arrow Functions)
解讀ECMAScript 6箭頭函數(shù)