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

  • 相关阅读:
    Privacy Policy
    privacy
    将一个无法一次读入内存的大文件排序
    java实现二叉树的非递归遍历
    java静态方法同步问题
    关于java静态方法继承问题
    Android 代码写布局
    Android自定义ImageView实现手势放大图片的控件,无需依赖任何第三方。
    Gradle版本更换问题
    Android的AlertDialog实现圆角边框
  • 原文地址:https://www.cnblogs.com/xutongbao/p/9924972.html
Copyright © 2011-2022 走看看