1.转码工具babel

   REPL环境: https://www.cnblogs.com/AnnieShen/p/6028304.html

1.暂时性死区

不报错:

<script>
   var tem=123;
   if(2>1){
              tem='wer';
              let a;
              console.log(tem);
   }
</script>

报错:

<script>
   var tem=123;
   if(2>1){
              tem='wer';
              let tem;
              console.log(tem);
   }
</script>

ES5时,没有块级作用域,会出现变量提升,相当于把变量提升到全局,把最初的覆盖,但变量提升了,实际还没有赋值。

ES6学习

 ES5的立即执行函数表达式(IIFE)可以省略了。    https://www.cnblogs.com/keketest/p/6121228.html

块级作用域:  打印5

<script>
          function f1() {
              let n = 5;
              if (true) {
                  let n = 10;
              }
              console.log(n); // 5
          }
          f1();
</script>

变量提升:    打印10

<script>
          function f1() {
              var n = 5;
              if (true) {
                  var n = 10;
              }
              console.log(n); //10
          }
          f1();
</script>

函数提升:

ES5 是把 函数a 内定义的 函数b 提升到 a的顶部。

在ES6 的浏览器 是把 函数a 内定义的 函数b 相当于 未赋值的变量 提升到 a的顶部。不是ES6的浏览器当let处理。

常量完全冻结:

ES6学习

定义一个常量 函数constantize 等于一个将对象冻结的函数。

阻止给对象添加属性的特效果和值,遍历对象自身可枚举的属性,

在匿名箭头函数里,如果每个属性的类型都是对象,执行定义的函数,冻结obj的每一个属性。

Object.freeze() 阻止修改现有属性的特性和值,并阻止添加新属性。

Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组。

箭头函数:https://blog.csdn.net/qq_35313994/article/details/78408288

                 https://www.cnblogs.com/snandy/p/4403111.html

2. 声明变量的6种方法

var name=。。。

个人领悟:函数声明类似class和var结合,function是一个像var一样的东西,name()是变量名,可以在里面写参数,{}就向class的大括号一样。

function name(){

}




相关文章: