[英]Why "console.log" doesn't work after a "return" command?
我想知道為什么在 return 命令之后的console.log
命令不起作用。 這是一個例子。 console.log(square(50))
不應該執行函數體中的所有命令嗎?
使用此代碼,console.log 命令僅顯示數字 2500,但不顯示短語“這是它的平方”。 為什么?
function square(x) { return x * x; console.log(`This is the square of it`); } console.log(square(50));
因為return是一個語句,並且在 return 之后編寫的任何代碼都不會執行,這就是為什么在 return 語句之后編寫的console.log
不會執行的原因。 上面的輸出只會是2500
console.log
(This is the square of it
); 此行將被忽略
由於return
使函數立即返回,因此后面編寫的任何代碼都將被完全忽略。
console.log
無法繞過此行為。
這是基本的編程知識,這里的解釋將為目標受眾保持“簡單”。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/return
return 語句結束函數執行並指定要返回給函數調用者的值。
返回的目的實際上是允許函數提供某種形式的信息。 當到達返回值時,代碼執行通常會回到調用函數的位置並計算返回值,然后從那里繼續執行:
function sum(a, b) {
return a + b;
}
const result = sub(3, 2); // Returns 5
console.log(result); // Outputs 5.
console.log(sum(2, 2)); // Outputs 4
此外:
function calculate(a, b, operation) {
const addOperations = ["add", "sum", "plus"];
const subtractOperations = ["take", "subtract", "minus"];
const multiplyOperations = ["times", "multiply"];
const divideOperations = ["divide", "divise"];
if (addOperations.includes(operation.toLowerCase())) return a + b;
if (subtractOperations.includes(operation.toLowerCase())) return a - b;
if (multiplyOperations.includes(operation.toLowerCase())) return a * b;
if (divideOperations.includes(operation.toLowerCase())) return a / b;
}
console.log(calculate(3, 3, "multiply")); // Outputs 9
console.log(calculate(4, 4, "divide")); // Outputs 1
console.log(1, 1, ""); // Outputs undefined
如果沒有返回,則評估為未定義。
因為return結束函數,控制台日志被忽略。
您可以只使用 1 並在 之后調用該函數,而不是使用 2 console.log ,如下所示:
function square(x) {
let sq = x*x;
console.log(`This is the square of it: ${sq}`);
}
square(50);
return 語句在該語句處結束函數的執行,並且不會像您的代碼那樣執行其他行。
所以試試這個:
function square(x) { return x * x; } console.log('This is the square of it: ', square(50));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.