由于最近在看深入理解es6的书,书中描述说,普通for循环下,let 声明每次都创建了一个新的 i 变量,那同理在普通for循环中const也是如此,就存在多个新的变量,但是实际上,for循环中使用const会报错,至此我就很不能理解了,书中原话见: es6 循环体中let和const区别-LMLPHP

咱们在继续顺着书往下看,发现,在for in for of中使用const不会报错,书中描述每次循环都会创建新key,每个key的值没有被改变,所以没有报错,书中原话如下:es6 循环体中let和const区别-LMLPHP

ok这里没有问题,经过用代码实验,也确实如此,每次循环都会创建新的key变量

对于普通for循环中,let和const都会创建新的变量i,表示不理解,通过代码断点调试,发现自始至终也只创建过一次变量i

调试代码:

for(let i = 0; i < 10; i++){
        console.log(i)
    }
    // 报错
    for(const i = 0; i < 10; i++){
        console.log(i)
    }

    const boy = {
        name:  'zhan',
        age: 23,
        sex: 'boy'
    }
    for(const key in boy){
        console.log(key)
    }
05-29 03:46