【问题标题】:JavaScript let if else statement argsJavaScript let if else 语句参数
【发布时间】:2019-04-16 22:32:40
【问题描述】:

我试图在 JavaScript 中定义一个 let,如果没有 arg[2],那么它将只使用 arg[1],但如果有 arg[1]arg[2],它将同时使用它们。

ie. command: !hello world
then: let cmd = arg[1]

还有

command: !hello world one
then: let cmd = arg[1] + " " + arg[2]

我有这个,但是它只在arg[2] 存在时才有效,并且在只提供arg[1] 时无效:

let cmd = args[1] + " " + args[2];

无论如何你可以指定一个 arg 来通过空格吗?所以 !hello world one, 将是 arg[1] arg[2] (arg[2]being: world one)

【问题讨论】:

  • 您似乎在问两个非常不同的问题:(1)如何处理可选的第二个参数和(2)如何传递包含空格的参数。目前尚不清楚您是否将第二个问题作为处理第一个问题的一种方式,或者它是否是一个单独的问题。第一个问题可以用三元表达式处理:let cmd = arg[2] === undefined ? arg[1] + " " + arg[2] : arg[1];
  • let cmd = args.join(" "); 如果你不介意他们可能提供更多两个参数就足够了。
  • 谢谢。 @TedHopp,我将如何处理第二个,其中 args[3] 将包含从 args[3] 及以后的所有内容?
  • 您可以使用@Tyler 建议的内容并使用args.slice(3).join(" ") 之类的内容收集所有剩余参数(这将创建一个包含arg 的所有元素的单个字符串,从索引3 开始,用空格分隔) .

标签: javascript let


【解决方案1】:

我通常会这样做:

const myFunction = (argA, argB) => {
    if (argB === undefined) argB = "";
    console.log(argA + " " + argB);
    return "" + argA + " " + argB
}

【讨论】:

    【解决方案2】:

    你的意思是:

    let test = arg[1] && arg[2] ? arg[1]+' '+arg[1] : arg[1];
    

    【讨论】:

      【解决方案3】:

      如果你使用 ES6,你可以像这样使用rest operator

      const myFunction = (...args) => {
       console.log(args[0])   
      }
      

      如果不使用粗箭头语法可以参考arguments关键字:

          function func1(a, b, c) {
            if(arguments && arguments.length == 2){
                console.log('do a thing')
              }else{
                console.log('do a different thing')
              }
            };
      

      【讨论】:

        猜你喜欢
        • 2021-09-11
        • 2016-06-21
        • 2015-05-16
        • 2021-11-17
        • 1970-01-01
        • 1970-01-01
        • 2019-04-09
        • 2019-05-06
        • 2016-07-15
        相关资源
        最近更新 更多