fba*_*bas 26 javascript function self
我可以编写一个返回iteself的函数吗?
我正在阅读关于闭包的一些描述 - 参见例6 - 函数返回一个函数,所以你可以调用func()();有效的JavaScript.
所以我想知道一个函数可以以这样的方式返回自己,你可以无限期地将它链接到它自己:
func(arg)(other_arg)()(blah);
Run Code Online (Sandbox Code Playgroud)
使用argumentsobject,callee还是caller?
Fla*_*ino 32
有2-3种方式.正如你所说,一个是使用arguments.callee.如果你正在处理一个匿名函数,而这个函数没有存储在某个地方(你知道)变量,那么这可能是唯一的方法:
(function() {
return arguments.callee;
})()()()().... ;
Run Code Online (Sandbox Code Playgroud)
第二是使用函数的名称
function namedFunc() {
return namedFunc;
}
namedFunc()()()().... ;
Run Code Online (Sandbox Code Playgroud)
而最后一个是使用分配给一个变量的匿名函数,但你必须知道的变量,所以在这种情况下,我看不出有任何理由,你为什么不能随便给一个函数名,并使用上述方法
var storedFunc = function() {
return storedFunc;
};
storedFunc()()()().... ;
Run Code Online (Sandbox Code Playgroud)
它们在功能上都是相同的,但却callee是最简单的.
编辑:我同意SLaks; 我不能推荐它
SLa*_*aks 10
是.
只是return arguments.callee;
但是,这可能会导致代码混乱; 我不推荐它.
你可以按照以下方式做你想做的事:
// Do definition and execution at the same time.
var someFunction = (function someFunction() {
// do stuff
return someFunction
})();
console.log(someFunction)
Run Code Online (Sandbox Code Playgroud)
JavaScript严格模式不支持arguments.callee.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode