JavaScript 函数作用域(Day14)

23 阅读1分钟

函数作用域

  • 调用函数时创建函数作用域;函数执行完毕,函数作用域销毁

  • 每调用函数一次,函数会创建一个新的函数作用域,彼此间互相独立

  • 在函数作用域以内可访问到全局作用域内的变量(全局变量)

        var f1=20
        function fn1(){
            console.log(f1)
        }
        fn1()
    	// 结果:20
    
  • 全局作用域中无法访问到函数作用域内变量

        function fn1(){
            var f2=10
        }
        fn1()
        console.log(f2)
        //结果:报错f2 is not defined
    
  • 在函数作用域中操作变量,会在其自身作用域中寻找

    • 若存在,则使用自身变量
    • 若不存在,逐级向上一级寻找
    • 若全局作用域中依旧未找到则报错,ReferenceError引用异常
  • 在函数中需访问全局重名变量,可使用window对象,默认就近寻找变量

  • 函数作用域中,同样存在变量提升和函数提升

        function fn2() {
            console.log(f3)
            var f3 = 100
        }
        fn2()
        //结果:undefined
    
  • 在函数中,不使用var关键字声明的变量都会成为全局变量