setTimeout与函数和无函数之间有什么区别?
问题描述:
如果我认为console.log是一个函数,那么在这两个之间有什么区别?setTimeout与函数和无函数之间有什么区别?
setTimeout(console.log('Test'), 1000);
和
setTimeout(function(){ console.log('Test'); } , 1000);
原因问这第二个电话后,立即正常1秒但第一个电话。
答
setTimeout
的第一个参数需要一个函数。当您通过console.log('Test')
时,它将评估console.log('Test')
FIRST,并将结果传递到实际的超时过程。在你的情况,console.log('Test')
实际上不返回的函数,所以评估时console.log('Test')
,它将打印test
到控制台,然后在1秒钟之后,什么也不做(因为你没有传递到setTimeout
功能。
在第二你实际上传递一个函数为它在1秒钟后执行,它给你你想要的结果
你能想象的功能是这个样子:
function setTimeout(functionToCall, timeToWait) {
// Some waiting procedure based on timeToWait
functionToCall();
}
免责声明这不是WH在功能上看起来像。
在第一种情况下,JS将首先调用console.log('Test')
,并将结果undefined
转换为setTimeout
。这导致它立即被打印。在第二种情况下,整个函数将被传递到setTimeout
而不首先被评估。
您正在将'console.log'的调用结果传递给setTimeout – ASDFGerte