Передать только второй аргумент в JavaScript - PullRequest
0 голосов
/ 28 мая 2018

В настоящее время я пытаюсь создать функцию, в которой я передаю только второй аргумент своей функции.Я прочитал некоторую документацию, но ничего не прощупывал.

Я бы сделал так:

 function test (a,b){ ....};
    // pass only the second parameter 
    test( ... , b) ;

Моя текущая идея состоит в том, чтобы передать второй аргумент как де-факто динамический параметр по умолчанию следующим образом:

    var defaultVar = "something" ;

    function test (a,b = defaultVar){...}

затем измените значение defaultVar в соответствии с моими потребностями.

var defaultVar = modification ; 

На самом деле, я работаю над Google drive 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, name)',
  }, (err, {data}) => {
    if (err) return console.log('The API returned an error: ' + err);
    const files = data.files;
    if (files.length) {
      console.log('Files:');
      files.map((file) => {
        console.log(`${file.name} (${file.id})`);

            // check if the file returns match the filename wished 
            displayFile(file);
              if(`${file.name}` == filename ){
                console.log("name found !")
                      const fileData = { name : `${file.name}`,
                                         id : `${file.id}`
                      }
         return fileData
        }

      });
    } else {
      console.log('No files found.');
    }
  });
}

listFiles(undefined, "test.md")

Любые идеи по улучшению приветствуются,

Спасибо

Ответы [ 2 ]

0 голосов
/ 17 марта 2019

Если вы в порядке с изменением количества аргументов, которые принимает ваша функция, вы можете передать аргументы через свойства объекта.Затем вы можете позволить вызывающему абоненту решить, какое свойство (или свойства) указать во время вызова.

Другие свойства могут принимать значения по умолчанию через деструктуризацию объекта в спецификации параметров функции:

function test({a = 1, b = 2}) {
    console.log(`a = ${a}, b = ${b}`);
};

test({b:42}); // only specify what b is
0 голосов
/ 28 мая 2018

С добавлением значений параметров по умолчанию , добавленных в ES2015, вы можете объявить значения по умолчанию для параметров, и при выполнении вызова, если вы передадите undefined в качестве первого параметра, он получит значение по умолчанию:

function test(a = "ay", b = "bee") {
  console.log(`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.log("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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...