「跟着渡一学前端」let和var的区别
学习资源
区别
-
全局污染
-
var
存在全局污染,let
不会let和var一样可以跨越标签使用
<body> <script> let a=1; </script> <script> console.log(a)// 输出1 </script> </body>
-
-
块级作用域
var
--全局作用域,函数作用域let
--块级作用域
-
TDZ暂时性死区--声明之前无法访问该变量。
let
存在--会报错,在声明之前无法访问。var
不存在--因为有变量提升,声明前可以获取到undefined
值;
-
重复声明
let
不允许--会报错,在预编译时(即在生成执行上下文时)发现错误。var
允许--后面的值覆盖前面的值