您好,登錄后才能下訂單哦!
這篇文章主要介紹了js函數(shù)的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
func = (l, m = 3, n = 4 ) => (l * m * n); func(2) //output: 24
注意,傳入?yún)?shù)為undefined
或者不傳入的時候會使用默認(rèn)參數(shù),但是傳入null
還是會覆蓋默認(rèn)參數(shù)。
默認(rèn)情況下,如果不向函數(shù)參數(shù)傳值,那么JS 會將函數(shù)參數(shù)設(shè)置為undefined
。其它一些語言則會發(fā)出警告或錯誤。要執(zhí)行參數(shù)分配,可以使用if
語句拋出未定義的錯誤,或者可以利用強(qiáng)制參數(shù)。
mandatory = ( ) => { throw new Error('Missing parameter!'); } foo = (bar = mandatory( )) => { // 這里如果不傳入?yún)?shù),就會執(zhí)行manadatory函數(shù)報出錯誤 return bar; }
返回值是我們通常用來返回函數(shù)最終結(jié)果的關(guān)鍵字。只有一個語句的箭頭函數(shù),可以隱式返回結(jié)果(函數(shù)必須省略大括號{ }
,以便省略返回關(guān)鍵字)。
要返回多行語句(例如對象文本),需要使用( )
而不是{ }
來包裹函數(shù)體。這樣可以確保代碼以單個語句的形式進(jìn)行求值。
function calcCircumference(diameter) { return Math.PI * diameter } // 簡寫為: calcCircumference = diameter => ( Math.PI * diameter; )
在某個場景下我們的函數(shù)中有判斷語句,這個判斷依據(jù)在整個項目運(yùn)行期間一般不會變化,所以判斷分支在整個項目運(yùn)行期間只會運(yùn)行某個特定分支,那么就可以考慮惰性載入函數(shù)
function foo(){ if(a !== b){ console.log('aaa') }else{ console.log('bbb') } } // 優(yōu)化后 function foo(){ if(a != b){ foo = function(){ console.log('aaa') } }else{ foo = function(){ console.log('bbb') } } return foo(); }
那么第一次運(yùn)行之后就會覆寫這個方法,下一次再運(yùn)行的時候就不會執(zhí)行判斷了。當(dāng)然現(xiàn)在只有一個判斷,如果判斷很多,分支比較復(fù)雜,那么節(jié)約的資源還是可觀的。
跟上面的惰性載入函數(shù)同理,可以在函數(shù)體里覆寫當(dāng)前函數(shù),那么可以創(chuàng)建一個一次性的函數(shù),重新賦值之前的代碼相當(dāng)于只運(yùn)行了一次,適用于運(yùn)行一些只需要執(zhí)行一次的初始化代碼
var sca = function() { console.log('msg') sca = function() { console.log('foo') } } sca() // msg sca() // foo sca() // foo
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“js函數(shù)的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。