用setTimeout()调用函数简单地说.。为什么setTimeout('playNote('+currentaudio.id+', '+noteTime+')', delay);很好地工作,在指定的延迟之后调用函数,但是setTimeout(playNote(currentaudio.id,noteTime), delay);同时调用函数playNote?(这些setTimeout()在for循环中)或者,如果我的解释太难理解,这两种功能有什么区别?
4 回答
芜湖不芜
TA贡献1796条经验 获得超7个赞
let foo2 = function foo(bar=baz()){ console.log(bar); return bar()}
javascript执行的第一件事是函数构造函数,并创建一个函数对象。类的函数关键字语法。 =>语法,您将得到类似的( )结果。 然后将刚刚创建的函数分配给变量。 foo2此时,没有运行任何其他函数:没有调用其他函数(两者都没有)。 baz也不 bar,没有价值观等。但是,在函数中已经检查了语法。 如果你通过 foo或 foo2到 setTimeout然后在超时之后,它将调用该函数,就像您这样做一样。 foo()..(注意,没有任何arg传递给 foo..这是因为 setTimeout在默认情况下不会传递参数, ,但这些参数是在超时到期之前计算的,而不是在超时到期时计算的。) 调用foo后,将计算默认参数。因为我们不传递参数就调用foo,所以默认的 bar被评估。(如果我们通过一个论点,这种情况就不会发生) 的默认参数计算时, bar,第一个javascript查找一个名为 baz..如果它找到了一个函数,那么它就会尝试调用它作为一个函数。如果该方法有效,则将返回值保存到 bar.现在评估该职能的主体: JavaScript查找变量 bar然后用结果调用sole e.log。这不叫酒吧。但是,如果它被称为 bar(),然后 bar的返回值。 bar()会被传递给 console.log相反。注意,javascript获取它正在调用的函数的参数值。 以前
它调用该函数,甚至在它查找该函数之前,查看它是否存在,是否确实是一个函数。 JavaScript再次查找 bar,然后尝试将其称为函数。的结果返回值。 foo()
()
添加回答
举报
0/150
提交
取消
