可能将默认参数设置为变量JS

问题描述:

我正在写我的第一个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

所以这只是一个错字? –

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没问题,很乐意帮助 –

您可以使用从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());

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 
 
    }; 
 
};