javascript - 为什么当我要求它运行十次时它只打印一次而不是十次
问题描述
我正在尝试制作一个在控制台中打招呼的代码,控制台十次,但由于某种原因它只打印一次
function a(){console.log("hi")
setTimeout(function(){ }, 1);
}
a(10);
解决方案
让我试着给你一个复杂的答案。
和:
a(10);
您实际上调用了一个被调用的函数a
,并且由于括号之间有一些东西,因此您还将值传递10
给该函数。
现在,如果我们查看您对函数的定义a
:
function a(){
}
我们可以看到它不接受任何参数,因为()
.
这意味着传递的值 10 永远不会被使用。
此外,函数定义内部是这样的:
setTimeout(function(){ }, 1);
}
这实际上将执行延迟了function()
一毫秒 - 但同样 - 函数内部没有任何内容。总结一下:你只是调用了a
一次函数,内部发生的唯一事情就是登录hi
到控制台——一次。
现在我当然不确定你想要完成什么,但如果你只是想在控制台上打印十次,一个简单的 for 循环可能会成功:
function a() {
console.log("hi");
}
for (var i = 0; i < 10; i++) {
a();
}
更高级的示例甚至可能使用传递给函数的值:
function a(param) {
for (var i = 0; i < param; i++) {
console.log("hi");
}
}
a(10);
推荐阅读
- c# - 在 C# 单元测试中,如何等效于 Java 的 Spy(而不是 Mock)来仅模拟类上的某些方法?
- ruby-on-rails - 如何使 ActionController::UnknownHttpMethod 错误静音?
- c# - 在 Asp.Net 的 DataList 中渲染大结果时出现错误
- r - 我不能在 R 中查看“ts”对象吗
- material-table - 自定义操作后使用远程数据时更新数据?
- c - rsize_t 定义在哪个标头中?
- python - 如何通过 tkinter 中的按钮传递参数
- node.js - 使用 Gmail API Node.js 客户端发送大型附件 (> 5 MB)
- sml - 在 SML 中重新定位元组元素的更短方法
- grep - 如何对多个字符串一起使用 -v 选项