4 回答
TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超7個贊
在Javascript中,函數(shù)是第一類對象。您可以將函數(shù)視為任何其他變量或?qū)ο?,并將它們傳遞給函數(shù),分配給其他變量,然后(在本例中)從函數(shù)返回它們。
一個可能更簡單的例子來表明它可能是這樣的
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
我自己在這里的例子是相當(dāng)無用的,只是為了展示原理。對于更有用的示例,函數(shù)通常返回對其他函數(shù)的引用,如問題中的示例所示。
TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個贊
不帶 () 的函數(shù)是指向該函數(shù)的指針。我一直將它與setTimeout一起使用。
function doSomething() {
console.log('something');
}
setTimeout(doSomething, 5000);
TA貢獻(xiàn)1890條經(jīng)驗(yàn) 獲得超9個贊
每次調(diào)用 sum 函數(shù)時,總是返回函數(shù) f 的引用。因此 sum(1) 將返回 f 的引用,而 sum(1).toString() 將返回 1 sum(1)(2) 將返回 f 的引用,而 sum(1)(2).toString() 將返回 3
它不是遞歸,因?yàn)槟环祷匾谩R虼?,在調(diào)用它之前,不會調(diào)用該函數(shù)
TA貢獻(xiàn)1719條經(jīng)驗(yàn) 獲得超6個贊
碰巧的是,當(dāng)您嘗試控制臺時.log任何值,它會調(diào)用“toString”方法。
在您的實(shí)例中,您重寫 toString 方法,而不是默認(rèn)實(shí)現(xiàn),它返回一個數(shù)字
添加回答
舉報(bào)
