<!DOCTYPE html> <html> <head> <title>let与var区别</title> <meta charset="UTF-8"> <script type="text/javascript"> console.log("var"); var a = []; for (var i = 0; i < 10; i++) { a[i] = function () { console.log(i); }; } a[6](); // 输出10,这是因为var是全局的,地址共享,所以a[0]-a[9]均为10 console.log("let"); var a = []; for (let i = 0; i < 10; i++) { a[i] = function () { console.log(i); }; } a[6](); // 输出6,这是因为let是块级作用域,这里会创建10个数,且a[0]=0、a[1]=1、a[2]=2.....以此类推 </script> </head> <body> </body> </html>
1、let不允许在相同作用域内,重复声明同一个变量
2、let
声明的变量只在它所在的代码块有效