關鍵詞:函數擴展
參數的默認值
function fn(a,b=3,c){
return {a,b,c}
}
console.log(fn(1)); // Object {a: 1, b: 3, c: undefined}
屬性的默認值
function ajax(options){
var opt = {
type:options.type || 'get'
}
};
rest:獲取函數的多余參數
function fn1(a,b,c,...rest){
console.log(rest) // 用于獲取函數的多余參數
}
fn1(1,2,3,4,5,6,7);
// [4,5,6,7]
var arr = [1,2,3,4,5,6,7];
console.log(Math.max.apply(null, arr));
// ES6 擴展運算符
console.log(Math.max(...arr));
var str = "ferrinte";
var arr1 = [...str];
console.log(arr1); // ["f", "e", "r", "r", "i", "n", "t", "e"]
箭頭函數
var f = v => v;
// 相當于
var f = function(v) {
return v;
};
var f = () => 5;
// 等同于
var f = function () { return 5 };
var sum = (num1, num2) => num1 + num2;
// 等同于
var sum = function(num1, num2) {
return num1 + num2;
};
// 箭頭函數可以與變量解構結合使用。
const full = ({ first, last }) => first + ' ' + last;
// 等同于
function full(person) {
return person.first + ' ' + person.last;
}
箭頭函數使用注意:
1.函數體內的this對象,就是定義時所在的對象,而不是使用時所在的對象。
2.不可以當作構造函數,即不可以使用new命令,否則會拋出一個錯誤。
3.不可以使用arguments對象,該對象在函數體內不存在。如果要用,可以用Rest參數代替。
4.不可以使用yield命令,因此箭頭函數不能用作Generator函數。
this指向的固定化,并不是因為箭頭函數內部有綁定this的機制,實際原因是箭頭函數根本沒有自己的this,導致內部的this就是外層代碼塊的this。正是因為它沒有this,所以也就不能用作構造函數。
除了this,以下三個變量在箭頭函數之中也是不存在的,指向外層函數的對應變量:arguments、super、new.target。
箭頭函數沒有自己的this,所以當然也就不能用call()、apply()、bind()這些方法去改變this的指向。
Set()
// 數據結構
// Set 是一個構造函數,可以傳入一個數組
var set = new Set([1,2,3,3,4,4,5]);
console.log(set); // Set {1, 2, 3, 4, 5}
console.log(set.size); //5
set.add(6);
set.delete(5);
console.log(set); // Set {1, 2, 3, 4, 6}
console.log(set.has(6)); // true
set.clear();
console.log(set); // Set {}
Map()
var obj = {
name:'hexun'
}
var map = new Map([['name','lein'],['age','20'],['age','30'],[obj,23]]);
map.set('sex','man')
console.log(map);
console.log(map.size); // 4
var arr = [...map];
console.log(arr); // [Array[2], Array[2], Array[2], Array[2]]
map.forEach(function(value,attr){
console.log(arguments); //
})
for(var key of map.keys()){
console.log(key)
}
for(var value of map.values()){
console.log(value);
}
for(var [key,value] of map.entries()){
console.log(key,value);
Symbol()
// 唯一ID
var s = Symbol();
console.log(s);
console.log(typeof s);
var s1 = Symbol('test');
var s2 = Symbol('test');
console.log(s1 == s2);