使用 let 虽然不会变量提升,但是发现 debug 的时候还是“提升”了影响调试怎么办?

2018-05-22 10:32:19 +08:00
 ai277014717
for ( let i=0;i<100;i++){...}
for ( let i=0;i<100;i++){...}
for ( let i=0;i<100;i++){...}
我在第三 for 调试的时候发现第三个 i 打印出来的值明显不正确。应该打印出来的是前两个循环中的 i。
遇到这种情况很影响调试,又不想每次都起一个名字怎么办?
4200 次点击
所在节点    Node.js
10 条回复
momocraft
2018-05-22 10:55:15 +08:00
为什么 "应该打印出来的是前两个循环中的 i" ?
bucky
2018-05-22 11:06:07 +08:00
你测试环境的问题吧
will0404
2018-05-22 11:46:12 +08:00
哪里提升了?

为什么应该打印前两个 for 的 i?

这几个 i 本来就应该互不影响啊,你不需要每次都起名啊。

基础没学好吧。
Luckyray
2018-05-22 12:02:24 +08:00
不可能相互影响到啊,你是不是哪里写错了?
otakustay
2018-05-22 12:42:26 +08:00
你倒是把代码给全再告诉我们你看到了什么输出啊
ai277014717
2018-05-22 12:42:30 +08:00
@momocraft
@bucky
@will0404
@Luckyray

程序执行出来是正确的,是在控制台打印出来的 i 不正确。
debug 时候可以看到 watch 中有三个 i 变量。控制台直接输入 i 的话,可能识别成其中了一个了。
另外我用了 babel-node,env,state-0 不知道有没有影响。我是觉得至少在控制台中不应该看到 3 个 i,这样 debug 就不知道我要查看的 i 是哪一个了。
ai277014717
2018-05-22 12:50:56 +08:00
@momocraft
@bucky
@will0404 实际运行没有影响 影响的是调试。
@Luckyray 只在 debug 打印的时候有影响。
@otakustay
@all 补图了。
hoosin
2018-05-22 13:18:47 +08:00
吃了没有文化的亏
ai277014717
2018-05-22 13:45:38 +08:00
@hoosin 能详细说一些了吗?
marcong95
2018-05-22 19:20:06 +08:00
我觉得 babel 编译后的代码的确是会有影响调试的情况的,例如编译后的 arrow function 里面各种_this2
至于 console.log 的问题我好像很久之前也遇到过的样子

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/456738

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX