我正在學習 JavaScript 的初學者課程,并且遇到了這段代碼。但我不明白為什么 sum 需要是一個 IIFE 函式。你能幫我理解這段代碼是如何作業的嗎?
const sum = function() {
return function sum(x, y, z) {
const args = [x, y, z];
return args.reduce((a, b) => a b, 0);
};
}();
console.log(sum(1, 2, 3))
uj5u.com熱心網友回復:
在這種情況下,變數 args 接受引數
const sum = function() {
return function sum(x,y,z) {
const args = [1,2,3];
return args.reduce((a,b) => a b, 0);};
}();
console.log(sum(1,2,3))
reduce() 方法為陣列的每個值執行一個 reducer 函式。在這種情況下,您將取陣列的前兩個元素,找到這兩個元素的總和,然后 reduce 方法一個一個地處理其他元素。
其他例子可以更好地解釋你
const numbers = [175, 50, 25];
function myFunc(total, num) {
return total - num;
} // returns 100 (175 - 50 - 25)
uj5u.com熱心網友回復:
在該函式中看起來只是為了向您展示如何作業 IIFE(函式末尾的括號),該括號是自動執行該函式,用途是如果您想在此加載時執行一個函式,您可以在“function”子句的末尾添加“()”或“ ”像這樣的“ function”要查看更多詳細資訊,請查看以下鏈接:
立即呼叫函式運算式 (IIFE)
uj5u.com熱心網友回復:
當前沒有原因該函式位于另一個執行的函式中。
這些是等價的,只是一個函式會立即回傳。如果我不得不猜測,下一條指令可能會討論作用域或柯里化?,誰知道呢。
const sum = function() {
return function sum(x, y, z) {
const args = [x, y, z];
return args.reduce((a, b) => a b, 0);
};
}();
console.log(sum(1, 2, 3))
const sum = function(x, y, z) {
const args = [x, y, z];
return args.reduce((a, b) => a b, 0);
};
console.log(sum(1, 2, 3))
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/318481.html
標籤:javascript 功能 生活
上一篇:高級R函式呼叫
