zoukankan      html  css  js  c++  java
  • JavaScript 函数中的变量声名提前

    JS 中 方法里的变量声名提前

    如下的一段代码,虽然在匿名方法中可以访问全局变量 global, 但由于声明被提前,所以输出依然是undefined

            var global = 3;
    
            (function(){
                console.log(global);
                var global = 5;
            })();

    等价代码:

            var global = 3;
    
            (function(){
                var global;
                console.log(global);
                global = 5;
            })();

    只要还在方法的作用域里,即使无效的代码依然会提前

            var global = 3;
    
            (function(){
                console.log(global);
                if(false){
                    var global = 4;
                }
            })();

    依然输出 undefined, 全局变量被覆盖

    除非不在方法的作用域里:

                var global = 3;
                (function () {
                    console.log(global);
                    (function () {
                        var global = 5;
                    })();
                })();

    这次global不能算是第一个方法的局部变量了,这次他就不能提前声明。

    输出3

  • 相关阅读:
    spring 装配核心笔记
    小明种苹果
    线性分类器
    报数
    编程计划2.0 //不断更新
    MySQL基础之存储过程
    MySQL基础之视图
    指令系统.传送类指令
    MySQL基础之索引
    寻址方式总结
  • 原文地址:https://www.cnblogs.com/chenyingzuo/p/12379947.html
Copyright © 2011-2022 走看看