<分区>
在 javascript 中有一个回调,函数是一等对象,对吗?所以我可以传递一个函数作为参数,但是如果我传递 console.log() 它不起作用为什么它不是一个函数?
setTimeout(function(){console.log("hello")},5000);
但是这段代码是有效的
setTimeout(console.log("hello"),5000);
产生错误,这是为什么?
标签 javascript
<分区>
在 javascript 中有一个回调,函数是一等对象,对吗?所以我可以传递一个函数作为参数,但是如果我传递 console.log() 它不起作用为什么它不是一个函数?
setTimeout(function(){console.log("hello")},5000);
但是这段代码是有效的
setTimeout(console.log("hello"),5000);
产生错误,这是为什么?
最佳答案
当您使用一些参数调用 console.log
时,该参数被打印到控制台并且该函数返回 undefined
。
所以当你这样做的时候:
setTimeout(console.log("hello"),5000);
"hello"
将被打印出来,但实际上你在做的是:
setTimeout(undefined, 5000);
在另一个示例(有效)中,您创建了一个新函数,但您没有调用它。因此,您将这个新函数传递给 setTimeout
,这就是它起作用的原因。
关于javascript - 为什么 console.log 不能作为参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50708915/
相关文章:
javascript - emscripten 在 C 中读取 javascript arrayBuffer
javascript - HTML5 Canvas : Can it blur shapes aswell as images
javascript - 在一个完全 javascript Web 应用程序中,如何制作才能单击退格键并转到上一个操作?
javascript - jQuery:如何获取表行中所选选项的值
javascript - 如何生成一个随机数,数字的长度需要为21,并且在Postman中需要加上 "01"作为前缀
javascript - 如何编写合适的算法序列化这种特殊格式的json数据?
javascript - 尝试使用连接器表连接 Sequelize 中的两个数据库表
javascript - 动态增加和减少 jQuery slider 值
javascript - RecordRTC:Ondataavailable 调用了两次。只有第一个文件是正确的,其他文件已损坏或太小