for循环中的switch case

今天写代码时遇到一个问题

var 没有块级作用域!

var 没有块级作用域!

var 没有块级作用域!

1
2
3
4
5
6
7
8
9
10
11
12
13
for (var i = 0; i < 3; i++) {
var a = '1'
switch (a) {
case '1':
for (var i=0;i<3;i++){

}
break
case '2':
break
}
console.log(i)
}

本来我想让

a=’1’ 时执行case ‘1’

a=’2’ 时执行case ‘2’

结果偏偏不执行case ‘2’

当然,业务比这复杂得多

经过调试:

  • 第一次循环i=0
  • 然后进入case ‘1’
  • i=4
  • 结束外层循环
  • 所以控制台打印4之后就结束了

实际上是个var没有块级作用域问题,

用let就可以解决,

但这种问题真正在实际复杂应用中就很难发现了,

JS基础真的是很重要,

以后能用let尽量不用var真的时太坑了

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×

// tidio机器人助手