如何解决Javascript 解释器如何执行递归函数?
举个例子
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//span[contains(text(),'btn__primary--large')]"}
js 编译器知道所有的函数声明,所以我可以在 function main (x) {
return x
}
function second() {
console.log("hello ")
}
中调用 second
main
我不明白递归函数是如何在函数声明中调用相同的函数
main(second())
我的思考过程是:好的,这是函数声明,这是函数的作用,但是怎么做
即使声明未完成,我也可以调用相同的函数吗
解决方法
因为函数在定义时没有运行。它只会在被调用时稍后运行。
函数的代码是执行计算的配方。如果在某个时刻它调用另一个函数,则意味着根据那个配方继续执行,然后当它完成时,执行返回到调用点之后,并且从那里恢复。
尽管调用相同的函数并不重要。这只是意味着将遵循相同的食谱。但是,至关重要的是,每次调用都是配方的一个独立副本,每个调用都在自己的环境(如调用堆栈帧等)中独立运行,这使得递归成为可能。
另见 these answers 由我进一步讨论,或 that one。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。