zoukankan      html  css  js  c++  java
  • Javascript中函数及变量定义的提升

    1. <html>  
    2. <head>  
    3. <title>函数提升</title>  
    4. <script language="javascript" type="text/javascript">  
    5.       
    6.     //在全局对象中声明两个全局函数,反模式  
    7.     function foo()  
    8.     {  
    9.         alert("global foo");  
    10.     }  
    11.       
    12.     function bar()  
    13.     {  
    14.         alert("global bar");  
    15.     }  
    16.   
    17.     //定义全局变量  
    18.     var v = "global var";  
    19.       
    20.     function hoistMe()  
    21.     {  
    22.         alert(typeof foo); //function  
    23.         alert(typeof bar); //undefined  
    24.         alert(v); //undefined  
    25.   
    26.         //为什么bar函数和变量v是未定义而不是全局变量中定义的相应的函数变量呢?  
    27.          //因为函数里面定义了同名的函数和变量,无论在函数的任何位置定义这些函数和  
    28.          //和变量,它们都将被提升到函数的最顶部。  
    29.           
    30.         foo(); //local foo  
    31.         bar(); //报错,缺少对象  
    32.           
    33.         //函数声明,变量foo以及其实现被提升到hoistMe函数顶部  
    34.         function foo()  
    35.         {  
    36.             alert("local foo");  
    37.         }  
    38.           
    39.         //函数表达式,仅变量bar被提升到函数顶部,实现没有被提升  
    40.         var bar = function()  
    41.         {  
    42.             alert("local bar");  
    43.         };  
    44.   
    45.           
    46.         //定义局部变量  
    47.          var v = "local";  
    48.     }  
    49.       
    50.     (function()  
    51.     {  
    52.         hoistMe();  
    53.           
    54.     })();  
    55.       
    56.    //函数表达式和变量表达式只是其声明被提升,函数声明是函数的声明和实现都被提升。  
    57.     /**由于函数提升的效果,hoistMe方法相当于 
    58.     function hoistMe() 
    59.     { 
    60.         //函数声明,变量foo以及其实现被提升到hoistMe函数顶部 
    61.         function foo() 
    62.         { 
    63.             alert("local foo"); 
    64.         } 
    65.          
    66.          //函数表达式,仅变量bar被提升到函数顶部,实现没有被提升(同变量提升) 
    67.         var bar = undefined; 
    68.          
    69.         //变量声明被提升 
    70.          var v = undefined; 
    71.          
    72.         alert(typeof foo); //function 
    73.         alert(typeof bar); //undefined 
    74.          
    75.         foo(); //local foo 
    76.         bar(); //报错,缺少对象 
    77.         
    78.         bar = function() 
    79.         { 
    80.             alert("local bar"); 
    81.         }; 
    82.        
    83.        v = "local"; 
    84.          
    85.     } 
    86.     */  
    87. </script>  
    88.   
    89. </head>  
    90. <body>  
    91. </body>  
    92. </html>  
  • 相关阅读:
    驱动下的异常处理
    头文件 .h 与源文件 .ccp 的区别
    驱动程序进阶篇
    驱动中链表的使用
    内存操作相关内核 API 的使用
    链表的概念、建立、删除与插入
    编写简单的 NT 式驱动程序的加载与卸载工具
    驱动程序入门篇
    c++ 指针的简单用法
    CTL_CODE 宏 详解
  • 原文地址:https://www.cnblogs.com/xiaotaiyang/p/4617863.html
Copyright © 2011-2022 走看看