zoukankan      html  css  js  c++  java
  • JavaScript中hoisting(悬置/置顶解析/预解析) 实例解释,全局对象,隐含的全局概念

    JavaScript中hoisting(悬置/置顶解析/预解析) 实例解释,全局对象,隐含的全局概念

    <html>
     <body>
      <script type="text/javascript">
        //JavaScript中hoisting(悬置/置顶解析/预解析) 实例解释
        myname = "global"; // global variable
        function func() {
            //var myname; // 等同于 -> var myname = undefined;
            //alert(myname); // "undefined"
            //myname = "local";
            //alert(myname); // "local"
    
            //JavaScript中,你可以在函数的任何位置声明多个var语句,并且它们就好像是在函数顶部声明一样发挥作用,这种行为称为 hoisting(悬置/置顶解析/预解析)。
            //只要你的变量是在同一个作用域中(同一函数),它都被当做是声明的,即使是它在var声明前使用的时候。
            //当你使用了一个变量,在函数中又重新声明的话,就可能产生逻辑错误(可能不是预期使用全局变量,而是变成局部变量 undefined)
            //所有的变量声明当被悬置到函数的顶部了,myname被当做了函数的局部变量(尽管是之后声明的)
            alert(myname); // "undefined"
            var myname = "local";//如果这个前面不加var 则上面的myname使用全局变量弹出global
            alert(myname); // "local"
    
            from_func_global = "test";
        }
    
        func();
    
        var my_var = "myvar";
        //每个JavaScript环境有一个全局对象,当你在任意的函数外面使用this的时候可以访问到。你创建的每一个全部变量都成了这个全局对象的属 性。
        //在浏览器中,方便起见,该全局对象有个附加属性叫做window,此window(通常)指向该全局对象本身。
        //JavaScript有隐含的全局概念,意味着你不声明的任何变量都会成为一个全局对象属性
        //通过var创建的全局变量(任何函数之外的程序中创建)是不能被删除的。
        //无var创建的 隐式全局变量(无视是否在函数中创建)是能被删除的。
        //隐式全局变量并不是真正的全局变量,但它们是全局对象的属性。属性是可以通过delete 操作符删除的,而变量是不能删除的
        // 试图删除
        alert(delete my_var); // false
        alert(delete myname); // true
        alert(delete from_func_global); // true
        // 测试该删除
        alert(typeof my_var); // "string"
        alert(typeof myname); // "undefined"
        alert(typeof from_func_global); // "undefined"
    
      </script>
     </body>
    </html>
  • 相关阅读:
    一本通1331后缀表达式的值
    一本通1198 逆波兰表达式
    一本通1311 求逆序对(归并排序应用)
    快速排序
    一本通1310 车厢重组(冒泡排序,类似逆序对)
    一本通1186 出现次数超过一半的数(类似桶排序)
    一本通1216 红与黑 (代码没有参考任何博客,完全是自己写的,我搜索出山了!!!)
    一本通1222 放苹果
    一本通 1212 LETTERS
    一本通1215 迷宫
  • 原文地址:https://www.cnblogs.com/zdz8207/p/javascript-hoisting-global.html
Copyright © 2011-2022 走看看