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