流浪のwolf

卷帝

导航

函数提升 和 变量提升的区别

注意:函数提升的优先级大于变量提升的优先级,即函数提升在变量提升的前面

1. 变量提升

使用var 定义的变量才有变量提升的现象 ,把所有 var 声明的变量提升到当前作用域的最前面;只提升声明 ,不提升赋值;

    <script>
      //  var num var定义的变量提升  注意:只会提升声明 , 不提升赋值 就是undefined
      console.log(num + '') // undefined件
      var num = 10   // 把var num 放到代码最前面 ,不提升赋值
    </script>

2. 函数提升

会把所有的函数声明提升到当前作用域的最前面 , 注意:只提升函数声明 , 不提升函数调用;

2.1 普通函数声明

    <script>
      // 在函数声明前调用不会报错  函数声明被提升到最前面了
      fn()
      function fn() {
        console.log('普通函数提升') //普通函数提升
      }
    </script>

2.2 函数表达式

函数表达式没有函数提升  

 <script>
      //  函数表达式 算是变量提升的一种  即 var fn  使用 fn() 就会报错
      fn() //  fn is not a function
      var fn = function () {    // 把函数当作值 , fn 当作变量
        console.log('函数表达式没有函数提升')
      }
    </script>

posted on 2022-07-29 21:23  流浪のwolf  阅读(166)  评论(0编辑  收藏  举报