在我的HTML代码中
<a href="#..." onclick="my_function()" id="id-ea">Click me!</a>
一旦点击“Click me!”,my_function()就会被调用,在那个程序中,我还有setup()函数。my_function()被调用后的执行顺序是什么?
是my_function()后跟setup(),还是setup()后跟my_function()?
var global_variable;
function setup(){
// setup using global_variable
}
function my_function(){
// update global_variable
}
4条答案
按热度按时间ebdffaop1#
setup()
是一个Processing函数,在程序启动时只执行一次,应用于程序初始化,例如屏幕大小、加载介质等。每个程序只能有一个setup()
函数,在初始执行后不应再次调用。my_function()
是由您创建的函数,仅当您在代码中调用它时才会调用它。1.因此,订单将为
setup() -> my_function()
。s3fp2yjn2#
为什么不试试看会发生什么呢?几个print语句会给予你答案:
但一般来说,
setup()
会被首先调用,因为它是在加载时由P5.js自动调用的,而my_function
函数只有在用户单击链接时才被调用,这是在页面加载很久之后。但是你不必相信我的话。运行它,看看会发生什么!:)
ryoqjall3#
JavaScript是一种单线程语言,这意味着它在给定的时间只执行一个代码块(函数)。JavaScript使用堆栈来执行代码。
栈有点像数组,但是栈没有索引,你只能执行最后一个元素,或者删除最后一个元素,所以在栈上,你只能执行两个操作
push
和pop
。让我们看一段代码:
因此堆栈流将如下所示:
Stack = [ one, two, three ]
一旦执行了three()
,则堆栈将如下所示:Stack = [ one, two ];
在执行two()
之后,则变为如下所示:Stack = [ one ]
最后,当执行one()
时,事件循环(简单地表示遍历堆栈并执行代码/函数的最后一个块)停止。现在,在p5.js/Processing的情况下,
setup()
函数被调用并执行,但draw()
函数继续被添加到堆栈,事件循环继续在堆栈中循环,并执行最后一个块/函数,在本例中为draw()
。另一件事是你不能在另一个函数中声明
setup()
或draw()
。它们必须独立声明。我不得不浪费很多时间去做这件事,但是什么都找不到。at0kjp5o4#
在P5中,setup函数会在程序启动时自动调用一次。您应该创建这个函数,以便正确初始化程序。以下是在文档中找到的一些重要事实:
[setup]* 用于定义初始环境属性,如屏幕大小和背景颜色,以及在程序启动时加载媒体,如图像和字体。每个程序只能有一个setup()函数,并且在初次执行后不应再次调用 *。
以下是设置的P5文档和参考
示例:
您可能还需要阅读draw函数的文档。
以下是在the main reference index上为文档找到的所有结构函数的列表: