[英]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.label
和info.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.