gpt4 book ai didi

javascript - JS : Why does code run differently on the console than when it's on a . js 文件?

转载 作者:行者123 更新时间:2023-11-28 18:59:23 25 4
gpt4 key购买 nike

我正在学习 JavaScript,我正在关注的书建议测试代码(用于练习和探索概念)的最简单的地方是浏览器控制台本身,所以这就是我一直在做的事情。

但是,我的一位专业 friend 告诉我改为制作一个 html 页面,将其链接到一个 js 文件,并将我想要测试的代码放在立即调用的函数内。这样我就可以在浏览器上加载和重新加载页面以查看控制台上的输出。

我很困惑为什么同一段简单的代码如果直接在控制台上输入与从文件加载相比会以不同的方式运行或输出。

然后我在我的 Material 上发现了这段代码(用于说明循环闭包):

for (var i=1; i<=5; i++) {
setTimeout(function timer(){
console.log(i);
}, i*1000 );
}

书上说这段代码应该输出数字 6 五次,但是当我在控制台(Google Chrome)上输入它时,输出是 5,然后是五个 6s(每秒一次)。

记住我 friend 所说的,我遵循了他的建议,事实上,相同的代码,当从链接到 html 的 js 文件执行时,输出不同,结果是数字 6 五次。

究竟为什么会发生这种情况?是发动机上的区别吗?编译是否因某种原因而发生不同?

我不知道这里发生了什么。我的 friend 没有时间或知识来解释,而且这本书从未涉及这个主题。

最佳答案

您看到的第一个 5 不是任何 console.log() 调用的结果。

当您在控制台中键入语句时,它会自动打印语句中最后一个表达式的值。在本例中,它打印了上次调用 setTimeout() 返回的值,即计时器 ID。

如果多次执行,您会看到第一个数字每次都会增加。

关于javascript - JS : Why does code run differently on the console than when it's on a . js 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32917195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com