Javascript node.js:console.log()是函数吗?
没错,console.log()是函数吗?为什么以下两个代码段有不同的输出Javascript node.js:console.log()是函数吗?,javascript,node.js,function,console.log,Javascript,Node.js,Function,Console.log,没错,console.log()是函数吗?为什么以下两个代码段有不同的输出 function delay(x) { console.log('Start of timeout'); return x; }; setTimeout(function(){console.log('End of timeout');}, delay(5000)); console.log('Start to do something else'); 是的,console.log是一个函数 第一个代
function delay(x) {
console.log('Start of timeout');
return x;
};
setTimeout(function(){console.log('End of timeout');}, delay(5000));
console.log('Start to do something else');
是的,console.log是一个函数
第一个代码段为
setTimeout
使用预期的syntac。第二个调用console.log
inline,它返回undefined
。这是setTimeout
的第一个参数。这解释了超时结束时出现的不同计时 在第一个示例中,您传递了setTimeout
一个稍后调用的函数,但在第二个示例中,您调用了console.log
并将返回值传递给setTimeout
函数。setTimeout的第一个参数是一个函数,在第一个代码段中传递函数,ok。在第二个函数中,您调用的是函数,因此您不是将函数作为参数传递,而是函数返回的值
function delay(x) {
console.log('Start of timeout');
return x;
};
setTimeout(console.log('End of timeout'), delay(5000)); // ???????
console.log('Start to do something else');