ES5中僅有全局做用域和函數做用域,沒有塊級做用域,會形成內層變量覆蓋外層變量,例如:函數
<script> var time = new Date(); function fun(){ console.log(time); if(false){ var time = "Hello world"; } }; fun();//undefined </script>
let實際上爲js新增了塊級做用域。spa
<script> console.log("ES5:"); function fun(){ var num = 100; if(true){ var num = 200; }; console.log(num); } fun();//200 </script> <script type="module"> console.log("ES6:"); function fun(){ let num = 100; if(true){ let num = 200; }; console.log(num); } fun();//100 </script>
2) 當即執行函數:code
ES5: (function(){}())blog
ES6:{ }ip