ES6函數擴展
- 可以直接為函數的參數指定默認值,參數變量是默認聲明的,所以不能用let或const再次聲明,參數默認值不是傳值的,而是每次都重新計算**默認值表達式**的值。也就是說,參數默認值是惰性求值的。
- 參數默認值可以與解構賦值的默認值,結合起來使用
- 通常情況下,定義了默認值的參數,應該是函數的尾參數。因為這樣比較容易看出來,到底省略了哪些參數。如果非尾部的參數設置默認值,實際上這個參數是沒法省略的。
- 指定了默認值以后,函數的argument.length屬性,將返回沒有指定默認值的參數個數。也就是說,指定了默認值后,argument.length屬性將失真
- 可以將參數默認值設為undefined,表明這個參數是可以省略的
- ES6 引入 rest 參數(形式為...變量名),用于獲取函數的多余參數,這樣就不需要使用arguments對象了;rest 參數之后不能再有其他參數(即只能是最后一個參數),否則會報錯;函數的length屬性,不包括 rest 參數。
~~~
function push(array, ...items) {
items.forEach(function(item) {
array.push(item);
console.log(item);
});
}
var a = [];
push(a, 1, 2, 3)
~~~
- 函數的name屬性,返回該函數的函數名,這個屬性早就被瀏覽器廣泛支持,但是直到 ES6,才將其寫入了標準。
- 如果箭頭函數不需要參數或需要多個參數,就使用一個**圓括號代表參數**部分
- 如果箭頭函數的代碼塊部分多于一條語句,就要使用大括號將它們括起來,并且使用return語句返回
- 箭頭函數可以與變量解構結合使用。
- 函數體內的this對象,就是定義時所在的對象,而不是使用時所在的對象,正是因為它沒有this,所以也就不能用作構造函數。
- 由于箭頭函數沒有自己的this,所以當然也就不能用call()、apply()、bind()這些方法去改變this的指向。
- **尾調用優化**(Tail call optimization),即只保留內層函數的調用幀;如果所有函數都是尾調用,那么完全可以做到每次執行時,調用幀只有一項,這將大大節省內存;這就是“尾調用優化”的意義。
- ES6 第一次明確規定,所有 ECMAScript 的實現,都必須部署“**尾調用優化**”;這就是說,ES6 中只要使用尾遞歸,就不會發生棧溢出,相對節省內存。
- 1.Mock.js
- 2.conic-gradient 圓錐漸變
- 3.ES6 Module學習筆記
- 4.ES6函數擴展學習筆記
- 5.導入topojson模塊的坑
- 6.git 內部分享
- 7.npm install --save
- 8.nvm和nrm
- 9.刪除node_modules文件夾
- 10.es6 symbol
- 11.Set和Map數據結構
- 12.chrome控制臺的$0
- 13.d3-ordinal
- 14.Object.assign() 和lodash的merge()
- 15.echarts x軸坐標文字顯示不全
- 16.echarts地圖配置項--中文
- 17.webpack自動瀏覽器打開插件
- 18.D3線條和面積動畫--未采用
- 19.投影濾鏡
- 20.文本擋住觸發事件
- 21圖表用法
- 22.大膽的表現自己把
- 23.裁剪clip-path
- 24svg線條動畫的反向和時間誤差
- 25.visibility和display的區別
- 26.SVG濾鏡
- 27windo命令行的坑
- 28.textContent與innerText的不同
- 29.CSS3炫酷文本
- 30.更改webpack配置文件路徑
- 31.大胖給我做的css codereivew
- 32.定義接口不要限定死
- 33.不使用浮動,用inline-block平分出現換行問題
- 34.輸入框的校驗
- 35.handlbars的registerHelper
- 36.animation-fill-mode
- 37.svg嵌套HTML,實現文本換行
- 38.SVN出現黃色感嘆號
- 39.typeof與instanceof
- 40.SVG里面謹慎設置font-family
- 41.新腳手架里的相對路徑問題