Я пытаюсь создать функцию, в которой я передаю только аргумент второй моей функции.
Я бы хотел, чтобы это работало так:
function test (a,b) {
// ...
};
// pass only the second parameter
test( ... , b);
Моя текущая идея - передать второй аргумент как динамический параметр по умолчанию де-факто следующим образом:
var defaultVar = "something";
function test (a, b=defaultVar) {
// ...
}
... затем измените значение defaultVar в соответствии с моими потребностями.
var defaultVar = modification;
Фактически, я использую API-интерфейс Google Drive, и я пытаюсь сделать его таким, чтобы я мог ввести строковое значение для второго параметра, чтобы выполнить обратный вызов. Этот обратный вызов будет выполнять роль проверки, действительно ли возвращаемый файл является файлом, в котором выполняется поиск (путем выполнения логической проверки значения имени).
Следовательно, для меня идея состоит в том, чтобы автоматизировать процесс получения файла на диске 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, name)',
}, (err, {data}) => {
if (err) return console.info('The API returned an error: ' + err);
const files = data.files;
if (files.length) {
console.info('Files:');
files.map((file) => {
console.info(`${file.name} (${file.id})`);
// check if the file returns match the filename wished
displayFile(file);
if (`${file.name}` == filename ){
console.info("name found !");
const fileData = {
name : `${file.name}`,
id : `${file.id}`
};
return fileData;
}
});
} else {
console.info('No files found.');
}
});
}
listFiles(undefined, "test.md")
Любые идеи по улучшению приветствуются.
Вы не можете передать два аргумента функции, не передав какое-либо значение в качестве первого аргумента.
можно использовать bind или call ?, может пригодиться developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
Может test(b)?
спасибо всем за ваши полезные и даже быстрые ответы, я завершил свой вопрос, надеюсь, моя точность будет полезна, а пока я проверю ваши предложения.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


С добавлением значения параметров по умолчанию в ES2015 вы можете объявить значения по умолчанию для параметров, и при выполнении вызова, если вы передадите undefined в качестве первого параметра, он получит значение по умолчанию:
function test(a = "ay", b = "bee") {
console.info(`a = ${a}, b = ${b}`);
}
test(); // "a = ay, b = bee"
test(1); // "a = 1, b = bee"
test(undefined, 2); // "a = ay, b = 2"
test(1, 2); // "a = 1, b = 2"Вы можете сделать что-то подобное вручную в среде до ES2015, проверив undefined:
function test(a, b) {
if (a === undefined) {
a = "ay";
}
if (b === undefined) {
b = "bee";
}
console.info("a = " + a + ", b = " + b);
}
test(); // "a = ay, b = bee"
test(1); // "a = 1, b = bee"
test(undefined, 2); // "a = ay, b = 2"
test(1, 2); // "a = 1, b = 2"... если это то, о чем вы спрашиваете. :-)
спасибо T.J. Краудер, я думаю, со всем этим все будет в порядке, я думаю, наконец, я был очень близок к ответу, который ищу. Единственное, что мне осталось сделать, это изменить значение имени файла в соответствии с body.req.name. Спасибо
Если вы согласны с изменением количества аргументов, которые принимает ваша функция, вы можете передать аргументы через свойства объекта. Затем вы можете позволить вызывающей стороне решить, какое свойство (или свойства) указать во время вызова.
Другие свойства могут принимать значения по умолчанию посредством деструктуризации объекта в спецификации параметра функции:
function test({a = 1, b = 2}) {
console.info(`a = ${a}, b = ${b}`);
};
test({b:42}); // only specify what b isЗамечательный ответ! Ваш ответ должен быть принятым!
Привет! Боюсь, совсем не понятно, о чем вы здесь спрашиваете. Обновите свой вопрос, добавив минимальный воспроизводимый пример, демонстрирующий проблему, в идеале работоспособный, используя Stack Snippets (кнопка панели инструментов
[<>]; вот как это сделать).