如果我将console.log视为一个函数,那么这两个之间的区别是什么?
setTimeout(console.log('Test'), 1000);
和
setTimeout(function(){ console.log('Test'); } , 1000);
在1秒后正确询问第二个呼叫但是立即第一个呼叫的原因。
答案 0 :(得分:4)
result
的第一个参数需要一个函数。当您传入var firstResultFirstValue=element(by.css('body > div > table > tbody > tr > td:nth-child(2)')).getText()
时,它将评估setTimeout
FIRST,并将其结果传递给实际的超时过程。在您的情况下,console.log('Test')
实际上并未返回某个函数,因此在评估console.log('Test')
时,它会将console.log('Test')
打印到控制台,然后在1秒之后,什么也不做(因为您没有传递给console.log('Test')
函数。
在第二个实际上你传递了一个函数让它在1秒后执行,这可以得到你想要的结果。
你可以想象看起来像这样的函数:
test
免责声明这不是该功能的实际情况。
在第一种情况下,JS将首先调用setTimeout
,并将结果function setTimeout(functionToCall, timeToWait) {
// Some waiting procedure based on timeToWait
functionToCall();
}
传递给console.log('Test')
。这导致它立即被打印。在第二种情况下,整个函数被传递到undefined
而不首先被评估。