2017-07-11 63 views
0

我有一個函數,rangeInclusive,其接受兩個ARGS:傳遞兩個值的函數,而不調用另一個函數兩次

function rangeInclusive(start, end) { 
    ... 
} 

爲了計算startend值I都另一個函數調用getValidYearRange

getValidYearRange() { 
    let validRange = []; 
    if (myCondition === 'foo') { 
    validRange = [this.calculateValidYear1(), this.calculateValidYear2()]; 
    } else { 
    validRange = [1900, 2017]; 
    } 

    return validRange; 
} 

正如你所看到的,我有一個條件集來決定範圍是我的硬編碼值,還是調用另外兩個函數來獲取更多信息。

但是我得到以下問題,rangeInclusive似乎得到的參數作爲數組和不確定的,如:

start = [1900, 2017], end = undefined 而不是: start = 1900, end = 2017

我不能改變rangeInclusive可言,因爲它是在整個項目中使用。

如何在不調用函數兩次的情況下返回startend的兩個值?

+0

您不能返回多個值。你需要改變你如何調用'rangeInclusive',例如'rangeInclusive(returnVal)'do'rangeInclusive(... returnVal)' –

+0

你不能這樣做:'rangeInclusive(validRange [0],validRange [1]) {/ *做些什麼* /}'或'rangeInclusive(... validRange){/ *做些什麼* /}' –

+0

我看不到rangeInclusive被調用的那一行,這就是你可以改變的地方。請顯示更多你的代碼。 – Robert

回答

1

如果您正在使用ES6語法你可以到這個由

const [start, end] = getValidYearRange()

現在你有兩個變量startend與您可以撥打rangeInclusive