4 回答

TA貢獻1876條經驗 獲得超7個贊
在Javascript中,函數是第一類對象。您可以將函數視為任何其他變量或對象,并將它們傳遞給函數,分配給其他變量,然后(在本例中)從函數返回它們。
一個可能更簡單的例子來表明它可能是這樣的
function foo() {
console.log("foo called");
}
bar = foo; // Assign the function foo to the variable bar
// Note that this doesn't actually call foo
bar(); // Now we call the foo function
我自己在這里的例子是相當無用的,只是為了展示原理。對于更有用的示例,函數通常返回對其他函數的引用,如問題中的示例所示。

TA貢獻1794條經驗 獲得超8個贊
不帶 () 的函數是指向該函數的指針。我一直將它與setTimeout一起使用。
function doSomething() {
console.log('something');
}
setTimeout(doSomething, 5000);

TA貢獻1890條經驗 獲得超9個贊
每次調用 sum 函數時,總是返回函數 f 的引用。因此 sum(1) 將返回 f 的引用,而 sum(1).toString() 將返回 1 sum(1)(2) 將返回 f 的引用,而 sum(1)(2).toString() 將返回 3
它不是遞歸,因為您只返回引用。因此,在調用它之前,不會調用該函數

TA貢獻1719條經驗 獲得超6個贊
碰巧的是,當您嘗試控制臺時.log任何值,它會調用“toString”方法。
在您的實例中,您重寫 toString 方法,而不是默認實現,它返回一個數字
添加回答
舉報