Могу ли я написать функцию, которая возвращает само себя?
Я читал некоторое описание замыканий - см. Пример 6 - где функция возвращала функцию, поэтому вы могли вызвать ] func () ();
как действительный JavaScript.
Поэтому мне было интересно, может ли функция возвращать себя таким образом, чтобы вы могли связать ее с собой на неопределенное время следующим образом:
func(arg)(other_arg)()(blah);
Используя arguments
объект, вызываемый или вызывающий?
Вы можете сделать то, что вы хотите, следующим образом:
// Do definition and execution at the same time.
var someFunction = (function someFunction() {
// do stuff
return someFunction
})();
console.log(someFunction)
arguments.callee не поддерживается в строгом режиме JavaScript.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode
Существует простой способ добиться этого, сделав следующее:
let intArr = [];
function mul(x){
if(!x){
return intArr.reduce((prev, curr) => prev * curr)
}
intArr.push(x);
return mul;
}
console.log(mul(2)(4)(2)()); => outputs 16
Также возможно просто вернуть аргумент самовозглашаемой функции, например
console.log( (function(a) { return a; })(1) ); // returns 1