首页 > 解决方案 > node.js 如何处理跳过的可选参数

问题描述

如果我跳过 node.js 中的可选参数会发生什么。我有以下代码:

    //server.mjs
    import { exec } from 'child_process';
    
    var myCommand = "ver";
    
    function execute(command, callback){
        // child_process.exec(command[, options][, callback])
        exec(command, function(error, stdout, stderr){ callback(stdout); });
    };
    
    function myCallback(text){
        console.log(text);
        console.log('done!');
    }
    
    execute(myCommand, myCallback);
    console.log('Start!');

现在从文档中我知道 exec 有一个强制参数(命令)和两个可选参数(选项和回调)。在我的示例中,我只向 exec 函数提供了“命令”和“回调”,但没有提供“选项”。node.js 如何知道我的第二个参数实际上是回调函数而不是选项对象?

编辑:正如jonrsharpe指出的那样,正是 exec 函数检查了这一点:

function normalizeExecArgs(command, options, callback) {
  if (typeof options === 'function') {
    callback = options;
    options = undefined;
  }

  // Make a shallow copy so we don't clobber the user's options object.
  options = { ...options };
  options.shell = typeof options.shell === 'string' ? options.shell : true;

  return {
    file: command,
    options: options,
    callback: callback
  };
}

标签: node.jsoptional-parametersoptional-arguments

解决方案


推荐阅读