2对比以下两道程序输出的值相同吗? A程序: var a = ; for let i = 0; i 10; i++ ai = function consolelogi; ; B程序 var a = ; for var
不相同。A程序输出的值分别为0-9,B程序输出的值都为10。因为在A程序中使用了let声明变量i,它会形成块级作用域,每次循环都会重新声明一个新的变量i,并绑定到当前循环的索引上,所以闭包函数中的i值是不同的。而在B程序中使用了var声明变量i,它没有块级作用域,每次循环只是修改了同一个i变量的值,所以闭包函数中的i值都是指向同一个变量的。
原文地址: https://www.cveoy.top/t/topic/bqfS 著作权归作者所有。请勿转载和采集!