Ara*_*and 3 javascript callstack settimeout
当调试器在d中触发时,下面的代码有一个新的callstack(这里是 jsfiddle )
function c() {
setTimeout( d, 1000 );
}
function d() {
debugger;
}
c();
Run Code Online (Sandbox Code Playgroud)
如果我们修改使用setTimeout( d(), 1000 );哪个代码括号(括号:)
function c() {
setTimeout( d(), 1000 );
}
function d() {
debugger;
}
c();
Run Code Online (Sandbox Code Playgroud)
那么callstack有c()和d()(这里是 jsfiddle ).为什么?
你没有在第二个例子中传递setTimeout函数d; 你是传递d(),这是调用的结果d.
调用的结果d是undefined因为它不返回任何东西,它转换为字符串"undefined",然后eval编辑,正好......没有.
关于callstacks,因为你在d里面调用c,这就是你c在callstack中看到的原因.为了澄清,你的第二个例子是相同的
function c() {
var temp = d();
setTimeout(temp, 1000);
}
function d() {
debugger;
}
c();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1343 次 |
| 最近记录: |