我的HTML代码中有
<a href="#..." onclick="my_function()" id="id-ea">Click me!</a>
一旦“点击我!”单击,调用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
}
答案 0 :(得分:1)
为什么不尝试一下,看看会发生什么?几个打印语句将为您提供答案:
function setup(){
console.log('setup');
}
function my_function(){
console.log('my_function');
}
但是通常我会说setup()
将首先被调用,因为P5.js在加载时会自动调用它。您的my_function
函数仅在用户加载页面很久之后单击链接时才会调用。
但是您不必相信我。运行它,看看会发生什么! :)
答案 1 :(得分:1)
setup()
是一种处理功能,在程序启动时仅执行一次,应将其用于程序初始化,例如屏幕大小,加载媒体等。每个程序只能有一个setup()
函数,并且在初次执行后不应再次调用它。my_function()
是由您创建的函数,仅当您在代码中的某处调用它时才会调用。 setup() -> my_function()
的形式出现。答案 2 :(得分:0)
JavaScript是一种单线程语言,这意味着它在给定的时间只会执行一个代码块(函数)。 JavaScript使用堆栈来执行代码。
堆栈有点像数组。但是堆栈没有任何索引。您只能执行last / recent元素或删除last / recent元素。因此,在堆栈上,您只能执行push
和pop
这两个操作。
让我们看一段代码:
function one(){
two();
}
function two() {
three();
}
function three() {
console.trace(“Lets Call The Stack”);
}
one();
因此堆栈流将如下所示:
Stack = [ one, two, three ]
一旦执行three()
,堆栈将如下所示:
Stack = [ one, two ];
执行two()
之后,它变成这样:
Stack = [ one ]
最后,当执行one()
时,将停止事件循环,该循环仅意味着循环遍历堆栈并执行最后的代码/功能块。
现在,在使用p5.js / Processing的情况下,会调用并执行setup()
函数,但是draw()
函数会继续添加到堆栈中,并且事件循环会不断循环遍历堆栈并执行最后一个块/功能,在这种情况下为draw()
。
另一件事是您不能在另一个函数中声明setup()
或draw()
。必须单独和分别声明。我不得不浪费很多精力去做,但是什么也找不到。