簡單記錄,方便快速複習~javascript
函數擴展: 參數默認值、rest 參數、擴展運算符、箭頭函數、尾調用...java
對象擴展: 簡潔表示、屬性表達式、新增API等...es6
//函數擴展 // 參數默認值 function fn(x,y=1){ console.log(x+y) } fn(2) { // 注意做用域 let x = 1 function test(x,y=x) { console.log(x,y) } test(2) // 2 2 } { // 注意做用域 let x = 1 function test1(a,y=x){ console.log(a,y) } test1(2) // 2 1 } // rest參數 function fn1(...args) { console.log(args) } fn1(1,2,3) function fn2(x,y,...z){ console.log(z) } fn2(1,2,3,4,5) // 擴展運算符 { console.log('a',...[1,2,3,4]) } // 箭頭函數 —— 注意this指向問題 // ES5 中 this指向函數調用的地方, ES6中 this指向函數定義的地方 let fn4 = (x,y) => { console.log(x + y) } console.log(typeof fn4) fn4(1,3) // 尾調用 function util(x) { console.log(x) } function mUtil(x) { return util(x) } mUtil(1) // 對象擴展 // 簡潔表示 { let a = 1,b = 2 let es5 = { a: a, b: b } console.log(es5) } { let a =1, b = 2 let es6 = { a, b } console.log(es6) } let es5_method = { sum: function(x,y) { console.log(x+y) } } es5_method.sum(1,2) let es6_method = { sum(x,y) { console.log(x+y) } } es6_method.sum(1,2) // 屬性表達式 let a = "name" let es6_obj = { // [a] 是一個表達式 [a]: "zhangsan" } console.log(es6_obj) // 新增API console.log( Object.is('abc','abc') ) //等同於 === console.log(Object.is([],[])) //false console.log('淺拷貝',Object.assign({a:'a'},{b: 'b'})) { let {a,b,...c} = {a: 'a',b:'b',c: 'c',d: 'd'} console.log(c) }