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 方法,而不是默认实现,它返回一个数字
添加回答
举报