Mar*_*ine 5 javascript anonymous this
我正在尝试制作一个递归的匿名函数.
这是功能:
(function (i) {
console.log(i);
if (i < 5) this(i + 1)
})(0)
Run Code Online (Sandbox Code Playgroud)
我知道"这个"是窗口对象.有没有办法调用该功能?
Rob*_*b W 12
该arguments.callee物业可以使用.
(function(i){console.log(i);if(i<5)arguments.callee(i+1)})(0)
Run Code Online (Sandbox Code Playgroud)
实现相同功能的另一种方法是命名功能.在范围之外,名称将不可用:
(function tmp(i){console.log(i);if(i<5)tmp(i+1)})(0); //OK, runs well
alert(typeof tmp); // Undefined
Run Code Online (Sandbox Code Playgroud)
arguments.callee在严格模式下禁止使用该属性:
"use strict";
(function(){arguments.callee})();
Run Code Online (Sandbox Code Playgroud)
抛出:
TypeError:严格模式函数或调用它们的参数对象可能无法访问'caller','callee'和'arguments'属性