溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

js函數(shù)的示例分析

發(fā)布時間:2022-03-22 14:59:58 來源:億速云 閱讀:97 作者:小新 欄目:web開發(fā)

這篇文章主要介紹了js函數(shù)的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

函數(shù)

1 函數(shù)默認(rèn)值

func = (l, m = 3, n = 4 ) => (l * m * n);
func(2) //output: 24

注意,傳入?yún)?shù)為undefined或者不傳入的時候會使用默認(rèn)參數(shù),但是傳入null還是會覆蓋默認(rèn)參數(shù)。

2 強(qiáng)制參數(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;
}

3 隱式返回值

返回值是我們通常用來返回函數(shù)最終結(jié)果的關(guān)鍵字。只有一個語句的箭頭函數(shù),可以隱式返回結(jié)果(函數(shù)必須省略大括號{ },以便省略返回關(guān)鍵字)。
要返回多行語句(例如對象文本),需要使用( )而不是{ }來包裹函數(shù)體。這樣可以確保代碼以單個語句的形式進(jìn)行求值。

function calcCircumference(diameter) {
 return Math.PI * diameter
}
// 簡寫為:
calcCircumference = diameter => (
 Math.PI * diameter;
)

4 惰性載入函數(shù)

在某個場景下我們的函數(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é)約的資源還是可觀的。

5 一次性函數(shù)

跟上面的惰性載入函數(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í)!

向AI問一下細(xì)節(jié)

免責(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)容。

js
AI