代码之家  ›  专栏  ›  技术社区  ›  Emily

如果没有使用switch语句条件传递参数,如何设置默认参数值?

  •  0
  • Emily  · 技术社区  · 2 年前

    我正在为一项任务做一个关于VScode的实验室练习,但我无法通过Mocha测试要求之一。这个测试需要“接受两个参数,一个名称和一种语言,并且语言默认为JavaScript”。我尝试将它默认为“Javascript”值,假设它想要一个switch语句。这是以下要求:

    describe('introductionWithLanguageOptional(name, language)', function() {
      it('takes in two arguments, a name and a language, and language defaults to JavaScript', function() {
        expect(introductionWithLanguageOptional("Gracie")).toEqual("Hi, my name is Gracie and I am learning to program in JavaScript.");
      })
    })
    

    坦率地说,我把自己弄糊涂了。

    这是我尝试过的:

    function introductionWithLanguageOptional(name, language = "Javascript") {
      switch (name, language) {
        case (name, language):
          return `Hi, my name is ${name} and I am learning to program in ${language}.`
          break;
        default:
          return `Hi, my name is ${name} and I am learning to program in ${language}.`
      }
    }
    
    console.log(introductionWithLanguageOptional("Gracie"))

    输出:

    Hi, my name is Gracie and I am learning to program in undefined.
    
    1 回复  |  直到 2 年前
        1
  •  0
  •   Lajos Arpad    2 年前

    您的开关盒基本上检查 name language 平等的他们自己,这总是正确的,使你的开关情况多余。还有你的 default 和你的完全一样 case 。让我们去掉它,比如:

    function introductionWithLanguageOptional(name, language= "Javascript"){
        return `Hi, my name is ${name} and I am learning to program in ${language}.`
    }
    

    的默认值 语言 是值 语言 如果您不指定它,将具有。无需手动设置。

    编辑

    let name = 'nm', language = 'lng';
    
    switch (name, language) {
        case (name, language): console.log("(name, language) equals itself"); break;
        default: console.log("something else happened");
    }
    
    switch(name, language) {
        case (language ,name): console.log("something else happened"); break;
        default: console.log("inverted name and language");
    }