• 求解: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

    }

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

  • 相关阅读:
    centos6.4下搭建Lampp
    lampp环境部署bugfree3.0.4
    ftp使用踩坑
    redis故障处理
    程序设计语言发展回顾与展望
    那些相见恨晚的 JavaScript 技巧
    我的七个建议
    让UNION与ORDER BY并存于SQL语句当中
    使用SQL语句创建登录名,并为指定数据库分配制定权限
    Linux操作系统菜鸟变成高手的十个建议
  • 原文地址:https://www.cnblogs.com/chyong168/p/2256173.html
Copyright © 2020-2023  润新知