1. let 声明变量
var
声明变量作用域,最近的函数或者全局
let
与var
的细微差别在于let
作用域在包含它块内(for
,if
,else
, while
,try-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箭头函数