我怎样才能有一个函数接受或者命名参数(foo({a: 'hello', b: 'it is me'}))或位置参数(foo('hello', 'it is me'))?
我知道可以通过将对象传递给函数来模拟命名参数:
function foo(options) {
options = options || {};
var a = options.a || 'peanut'; // whatever default value
var b = options.b || 'butter'; // whatever default value
console.log(a, b);
}
// ES6 allows automatic destructuring
function foo({a = 'peanut', b = 'butter'} = {}) {
console.log(a, b);
}
Run Code Online (Sandbox Code Playgroud)
但这不允许我接受通过的位置论证.
我想使用ES6,但ES5的任何东西都可以.
我目前正在尝试制作一个仅传递函数第二个参数的函数。我已经阅读了一些文档,但没有任何探索。
我会做到的:
function test (a,b){ ....};
// pass only the second parameter
test( ... , b) ;
Run Code Online (Sandbox Code Playgroud)
我当前的想法是将第二个参数作为实际的动态默认参数传递,如下所示:
var defaultVar = "something" ;
function test (a,b = defaultVar){...}
Run Code Online (Sandbox Code Playgroud)
然后根据我的需要更改defaultVar值。
var defaultVar = modification ;
Run Code Online (Sandbox Code Playgroud)
实际上,我正在使用Google驱动器API,并且尝试在第二个参数中输入字符串值以进行回调。此回调将充当验证返回文件是否有效的搜索文件的角色(通过对名称值进行布尔验证)。
因此,我的想法是通过传递他的名字并以此方式检索文件数据来自动化在Google驱动器上获取文件的过程。
我希望我的精确度会有所帮助。
这是我的quickstart.js:
(...Google authentication and all) ;
var filename = "";
// enter a filename in the function by the way of filename
function listFiles (auth, filename = filename) {
const drive = google.drive({version: 'v3', auth});
drive.files.list({
pageSize: 50,
fields: 'nextPageToken, files(id, …Run Code Online (Sandbox Code Playgroud)