重新启动匿名函数

时间:2015-11-17 01:11:34

标签: javascript

我正在尝试重新启动匿名函数。如果这个函数有一个名字我可以称之为,例如:

from datetime import date

class Person:

    def __init__(self, name, year):
        self.name = str(name)
        self.year = year
    def age(self):
        return date.today().year- self.year
    def name(self):
        return (self.name)

class Instructor(Person):

    def __init__(self, name, age, degree):
        Person.__init__(self, name, age)
    def degree(self):
        return (self.degree)

class Student(Person):

    def __init__(self, name, age, major = "major"):
        Person.__init__(self, name, age)
    def major(self):
        return (self.major)

但是这种情况不适用于:

function myFunction(){
    if(false){
      myFunction();
    } 
}

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

显而易见的解决方案是给匿名函数命名。但是,既然你似乎知道这一点,我会假设你不能这样做。所以,相反,你可以在其中放入一个命名的本地函数并调用它:

function() {

    function run() {
        if(some condition){
            // call this again in 1 second
            setTimeout(run.bind(this), 1000);
        }
    }

    run.call(this);
}

如果您的函数中没有使用this的值,那么您可以将其简化为:

function() {

    function run() {
        if(some condition){
            // call this again in 1 second
            setTimeout(run, 1000);
        }
    }

    run();
}