zoukankan      html  css  js  c++  java
  • javascript变量提升和函数提升

    变量提升是把变量提升提到函数顶部。需要说明的是,变量提升只是提升变量的声明,并不会把赋值也提升上来。

    函数提升是把整个函数都提到前面去。函数表达式不能被提升,函数声明形式能被提升。

    <!DOCTYPE html>
    <html lang="en">
    <head>
    </head>
    <body>
    <script>
        //变量提升
        function test(){
            a=2;
            var a;
            console.log(a);   //2
        }
    
        test();
    
        //变量提升,不会把赋值也提升上来
        var v='Hello World';
        (function(){
            var v;
            console.log(v);  //undefined
            v='I love you';
        })();
    
        //函数声明形式能被提升
        function myTest(){
            foo();
            function foo(){
                console.log("hello world");  //hello world
            }
        }
        myTest();
    
        //函数表达式不能被提升
        function myTest2(){
            foo();    //foo is not a function
            var foo =function foo(){
                console.log("hello world");
            }
        }
        myTest2();
    </script>
    </body>
    </html>


    <!DOCTYPE html>  
    <html lang="en">  
    <head>  
    </head>  
    <body>  
    <script>  
    //输出Goodbye Jack
    var name = 'World!';
    (function () {
        if (typeof name === 'undefined') {
            var name = 'Jack';
            console.log('Goodbye ' + name);
        } else {
            console.log('Hello ' + name);
        }
    })();
    
    
    //输出Hello World!
    var name2 = 'World!';
    (function () {
        if (typeof name2 === 'undefined') {
            name2 = 'Jack';
            console.log('Goodbye ' + name2);
        } else {
            console.log('Hello ' + name2);
        }
    })();
    
    //输出Hello World!
    var name3 = 'World!';
    (function () {
        if (typeof this.name3 === 'undefined') {
            var name3 = 'Jack';
            console.log('Goodbye ' + name3);
        } else {
            console.log('Hello ' + this.name3);
        }
    })();
    </script>  
    </body>  
    </html

  • 相关阅读:
    HDOJ 1207 汉诺塔II
    [转]写代码的小女孩
    POJ Subway tree systems
    HDOJ 3555 Bomb (数位DP)
    POJ 1636 Prison rearrangement (DP)
    POJ 1015 Jury Compromise (DP)
    UVA 10003
    UVA 103 Stacking Boxes
    HDOJ 3530 Subsequence
    第三百六十二、三天 how can I 坚持
  • 原文地址:https://www.cnblogs.com/xutongbao/p/9924972.html
Copyright © 2011-2022 走看看