美文网首页
js 函数和变量提升

js 函数和变量提升

作者: Vergil_wj | 来源:发表于2021-06-08 08:26 被阅读0次

    js 中函数和变量的声明都将被提升到函数的最顶部。

    我们平时的写法是先声明后使用:

        var y = 7
        console.log(y)
    

    变量的提升则是可以先使用,后声明:

        y = 7
        console.log(y)
        var y
    

    函数的提升:函数可以在声明之前被调用

        //先调用
        myFunction(5)
        //后声明
        function myFunction(y){
          console.log(y * y)
        }
    

    想要理解以上,需要了解hoisting(声明提升)
    声明提升:函数声明和变量声明总是会被解释器悄悄地被"提升"到方法体的最顶部。

    初始化不会提升

        console.log(y)  // undefine
        var y = 7
    

    输出 undefine,这是因为变量var y提升了,但初始化y=7不会提升,所以 y 就是一个未定义的变量。

    上面的写法相当于:

        var y
        console.log(y) //undefine
        y = 7
    

    使用函数表达式,也不会得到提升,道理同上。

        b(5)
        var b = function myFunction(y) {
          console.log(y * y)
        }
    

    以上会直接报错:b 不是一个函数。

    在头部声明变量

    通常情况下还是在作用域开始前就声明这些变量,这是正常的 js 解析步骤,也是我们平时的写法,利于理解,不会出错。

    参考

    JavaScript 声明提升

    相关文章

      网友评论

          本文标题:js 函数和变量提升

          本文链接:https://www.haomeiwen.com/subject/qykosltx.html