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