var a = ; for let i = 0; i 10; i++ ai = function consolelogi; ; ai var a = ; for var i = 0; i 10; i++ ai = function consolelogi;
这两个代码块的区别在于变量 i 的作用域不同。第一个代码块中使用了 let 声明 i,因此 i 的作用域是块级作用域,即 for 循环中的每一次迭代都会创建一个新的 i 变量,并且每个 i 变量的值都会被保存在对应的函数中。因此,当执行 ai 时,会输出 i 对应的值。
而第二个代码块中使用了 var 声明 i,因此 i 的作用域是全局作用域,即 for 循环中的每一次迭代都会修改同一个 i 变量的值,因此每个函数中保存的 i 值都是相同的。因此,当执行 ai 时,会输出最后一次迭代后 i 的值。
原文地址: https://www.cveoy.top/t/topic/bo5p 著作权归作者所有。请勿转载和采集!