繁体   English   中英

如果在console.log 中调用了相应的函数,如何打印标签。 现在它不打印标签和结果?

[英]How can I print label if the corresponding function is called in the console.log. Now its not printing the label and result?

如果在console.log 中调用了相应的函数,如何打印标签。 现在它不打印标签和结果? 有人可以请指教

    let num1 = 100;
    let num2 = 200;
    let text = 'add';
    calculationOfNumbers(text, num1, num2);
    
    function calculationOfNumbers(text, num1, num2) {
    if (text == 'add') {
        let label = "Adding";
        let result = addFunction(num1, num2);
        console.log(`This is : ${label}`+result);
    } else if (text == 'subtract') {
        let label = "Subtracting";
        let result = subtractFunction(num1, num2);
        console.log(`This is : ${label}`+result);
    }

}

function addFunction(num1, num2 ) {
    let result = parseInt(num1) + parseInt(num2);
    return result;
}

function subtractFunction(num1, num2) {
    let result = parseInt(num2)  - parseInt(num1) ;
    return result;
}

那些return label, result什么都不做。 和做return result 了解逗号运算符 JS 中还没有元组数据类型。

你可以做的是:

function addFunction(num1, num2, label) {
    let result = parseInt(num1) + parseInt(num2);
    return [label, result];
}
function calculationOfNumbers(x, num1, num2) {
    let label, result;
    if (x == 'add') {
       [label, result] = addFunction(num1, num2, "adding");
    } else if (x == 'subtract') {
       [label, result] = subtractFunction(num1, num2, "subtracting");
    }
    console.log(`This is : ${label} ${result}`);
}

即,返回数组并使用解构。

甚至:

function calculationOfNumbers(x, num1, num2) {
    let result;
    if (x == 'add') {
       result = addFunction(num1, num2);
    } else if (x == 'subtract') {
       result = subtractFunction(num1, num2);
    }
    console.log(`This is: ${label} ${result}`);
}

function addFunction(num1, num2) {
    let result = parseInt(num1) + parseInt(num2);
    return label="adding", result;
}

function subtractFunction(num1, num2) {
    let result = parseInt(num2)  - parseInt(num1) ;
    return label="subtracting", result;
}

(我不是说这是最好的方法)

由于您无法在 JavaScript 中使用一个return语句返回多个值,因此您可以使用的一种选择是返回一个object如下所示:

 let total = 0; let num1 = 100; let num2 = 200; let text = 'add'; let label = ""; calculationOfNumbers(text, num1, num2); function calculationOfNumbers(x, num1, num2) { let info; if (x == 'add') { info = addFunction(num1, num2, "adding"); } else if (x == 'subtract') { info = subtractFunction(num1, num2, "subtracting"); } console.log(`This is ${info.label} : ${info.result}`); } function addFunction(num1, num2, label) { let result = parseInt(num1) + parseInt(num2); return { label, result }; } function subtractFunction(num1, num2, label) { let result = parseInt(num2) - parseInt(num1); return { label, result }; }

请注意我如何将每个函数调用分配给变量info然后您可以分别使用info.labelinfo.results访问所需的属性。

您的代码中需要修改的东西很少


 function calculationOfNumbers(x, num1, num2) {
    if (x == 'add') {
        // function is returning some values, but it was never stored somewhere to be used later
        addFunction(num1, num2, "adding");
    } else if (x == 'subtract') {
      // same situation, function is returning some values, but it was never stored somewhere to be used later
        subtractFunction(num1, num2, "subtracting");
    }
   // you are printing (result) but it was never declared before
    console.log(`This is : ${label}`+result);
}

function addFunction(num1, num2, label) {
  // it's better to use Number(num1) instead of parseInt()
    let result = parseInt(num1) + parseInt(num2);
    // you are returning label inside here, however you didn't amend the global variable result,
// also no need to pass it down to this function, the add function should be returning only the result of the calculation
    return label, result;
}

function subtractFunction(num1, num2, label) {
    let result = parseInt(num2)  - parseInt(num1) ;
    return label, result;
}

所以修改后的代码应该如下所示:

let num1 = 100;
let num2 = 200;
let text = 'add';

calculationOfNumbers(text, num1, num2);

function calculationOfNumbers(x, num1, num2) {
  let label = x;
  let result = 0;

  if (x == 'add') {
    result = addFunction(num1, num2);
  } else if (x == 'subtract') {
    result = subtractFunction(num1, num2);
  }
  console.log(`This is : ${label}` + result);
}

function addFunction(num1, num2) {
  let result = Number(num1) + Number(num2);
  return result;
}

function subtractFunction(num1, num2) {
  let result = Number(num2) - Number(num1);
  return result;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM