2017-08-31 52 views
1

我正在寫我的第一個jQuery依賴插件。可能將默認參數設置爲變量JS

我的問題是可以缺省參數變量,像這樣:

var s = 400, 
    m = 500, 
    l = 700, 
    xl = 960; 

function breakpoints(s = s, m = m, l = l, xl = xl) { 
    return { 
    s: s, 
    m: m, 
    l: l, 
    xl: xl 
    }; 
}; 

當使用console.log(s, m, l, xl);我最初breakpoints()聲明中我得到的錯誤:

s is not defined

在此先感謝您的幫助。

+0

是看出來的功能提升。 –

+0

所以這只是一個錯字? –

回答

4

ES6/ES2015上的參數支持的默認值,因此您的代碼將工作,只要瀏覽器支持這些標準。

這就是說你需要給外部/內部變量不同的名稱,否則它們將不會在你嘗試使用它們的地方提供。試試這個:

var s = 400, 
 
    m = 500, 
 
    l = 700, 
 
    xl = 960; 
 

 
function breakpoints(_s = s, _m = m, _l = l, _xl = xl) { 
 
    return { 
 
    s: _s, 
 
    m: _m, 
 
    l: _l, 
 
    xl: _xl 
 
    }; 
 
}; 
 

 
console.log(breakpoints());

+0

在不同範圍內複製變量名稱有點反模式 - 我建議使用eslint之類的東西來標記它。 –

+0

這回答了我的問題@Rory。我會盡可能接受。謝謝。 – danMad

+0

@DanMad沒問題,很樂意幫助 –

1

您可以使用從ES6/ES2015開始的默認參數。唯一的問題是你需要重新命名你的輸入參數。

var s = 400, 
 
    m = 500, 
 
    l = 700, 
 
    xl = 960; 
 

 
function breakpoints(_s = s, _m = m, _l = l, _xl = xl) { 
 
    return { 
 
    s: _s, 
 
    m: _m, 
 
    l: _l, 
 
    xl: _xl 
 
    }; 
 
}; 
 

 
console.log(breakpoints());

0

var s = 400, 
 
    m = 500, 
 
    l = 700, 
 
    xl = 960; 
 

 
console.log(breakpoints(s,m,l,xl)); 
 

 
function breakpoints(s, m, l, xl) { 
 
    return { 
 
    s: s, 
 
    m: m, 
 
    l: l, 
 
    xl: xl 
 
    }; 
 
};

相關問題