javascript - 为什么 console.log 不能作为参数工作?
问题描述
在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
,这就是它起作用的原因。
推荐阅读
- c - 变量 'c' 已设置但未使用 [-Wunused-but-set-variable]
- python - AttributeError:“kivy.properties.ObjectProperty”对象没有属性“add_widget”
- python - 使用 While 循环的 Python 比较
- python - 将 XML 文件中的所有元素解析为 CSV,无需硬编码值
- javascript - 如何使 div 出现在计时器上并在点击时消失?
- c++ - 扩展/增加智能指针的引用计数
- angular - ionic 显示空的离子含量
- wordpress - 特定主机上的两个 WordPress 站点,加载速度比其他主机上的其他 WP 站点慢
- c - 使用 unsigned char 的用户输入值而不是 unsigned char 后面的生成值
- java - 用户从重定向返回后是匿名的