zoukankan      html  css  js  c++  java
  • 求解:js函数在预编译期间的谜 简单

    先看这么一句话:

      “在JS预编译期,仅仅是对函数的名称、函数内部的各种标识符进行检索,并建立索引”


    根据上述,我们看看示例:

    示例1: 

    function test6_2() {

        var a = 123;

        (function() {

            alert(a);  //undefined  预编译时被a标识符替换,故undefined

            var a = 1.11111;

            alert(a); //1.11111

        })();

    }

    示例2:

    function test6_3() {

        var a = 123;

        (function() {

            // function a() {alert("function")}   预编译时,被函数a替换,疑问:在函数a后面继续声明有a变量,不过这个变量似乎优先级不够?

            alert(a); 

            var a = "abc";

            function a() {alert("function")}

            var a = 1.11111;

            alert(a); // 1.11111

        })();

    }

    示例3:

    function test6_4() {

         // function a() {alert(1)}   预编译时,被函数f替换,疑问:在函数f后面继续声明有标识符f,不过这个变量似乎优先级不够?

        alert(f);

        function f() {alert(1)}

        var f = function() {alert(2)};

    }

    示例4:

    function test6() {

        function f() {

            alert(1);

        }

        f();    //4

        var f = new Function("alert(2)");

        f();       //2

        var f = function() {alert(3)};

        f();          //3

        function f() {

            alert(4);

        }

        f();             //3

        var f = new Function("alert(5)");

        f();                //5

        var f = function() {alert(6)};

        f();                   //6

    }

    备注:继续学习,后期来解答这个疑问!

  • 相关阅读:
    我的第一个博客在博客园安家了,哈哈~欢迎大家光临
    JS未设置对象问题解决方案
    关于Oracle的优化
    USACO 1.2 Milking Cows
    C语言的文件操作 freopen
    USACO 1.2 Palindromic Squares
    USACO 1.1 Broken Necklace
    ACM征程再次起航!
    USACO 1.3 Barn Repair
    USACO 1.2 Transformations
  • 原文地址:https://www.cnblogs.com/chyong168/p/2256173.html
Copyright © 2011-2022 走看看