首页 > 解决方案 > 为什么 console.log 不能作为参数工作?

问题描述

在javascript中有一个回调,函数是一等对象对吗?所以我可以将函数作为参数传递但是如果我传递 console.log() 它不起作用为什么它也不是一个函数?

setTimeout(function(){console.log("hello")},5000);

但是此代码有效

setTimeout(console.log("hello"),5000);

产生错误,这是为什么?

标签: javascript

解决方案


当您console.log使用某些参数调用时,该参数将打印到控制台并且函数返回undefined

所以当你这样做时:

setTimeout(console.log("hello"),5000);

"hello"将被打印出来,但你实际上在做的是:

setTimeout(undefined, 5000);

在另一个示例(有效)中,您创建了一个新函数,但您没有调用它。因此,您将这个新函数传递给setTimeout,这就是它起作用的原因。


推荐阅读