js函数变量提升理解

   var n = 10
    function fn() {
        // var n = 20
        function f() {
            // 没用var声明,去外层寻找n,直到找到windows为止,找到的话用的就是哟个全局变量,会改变原始全局变量的值
            n++;
            console.log(n)
        }
        var n
        n = 20
        f()
        console.log(n);
        return f
    }

    var x = fn()
    // 会在上一个x的值上去操作
    x()
    x()
    /* 使用var,相当于
    var x
    x = fn()
    相当于需要重新初始化一遍
    */
    var x = fn()
    console.log(n)

js函数变量提升理解_第1张图片

你可能感兴趣的:(javascript,开发语言,ecmascript)