我有一个函数,我希望它每次触发时都执行交替进程.任何有关如何实现这一目标的帮助都会很棒.
function onoff(){
statusOn process /*or if on*/ statusOff process
}
Run Code Online (Sandbox Code Playgroud)
JavaScript的一个有趣的方面是函数是第一类对象,这意味着它们可以具有自定义属性:
function onoff() {
onoff.enabled = !onoff.enabled;
if(onoff.enabled) {
alert('on');
} else {
alert('off');
}
}
Run Code Online (Sandbox Code Playgroud)
为此,您的函数应该有一个名称.如果您的函数是匿名的(未命名),您可以尝试使用arguments.callee它来访问它,但在新的ES5标准中不推荐使用它,而在使用其严格模式时则不可以.
通过使用闭包,您可以定义只能由函数本身访问的静态变量:
var toggle = (function()
{
var state = true;
return function()
{
if(state)
alert("A");
else
alert("B");
state = !state;
};
})();
Run Code Online (Sandbox Code Playgroud)
现在你可以反复调用toggle(),它会在"A"和之间交替"B".该state变量无法从外部访问,因此您不会污染全局变量范围.