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

    }

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

  • 相关阅读:
    一文读懂Lua元表
    React-Antd Pro环境搭建
    如何在QT项目中引入Boost库
    .NET Core RSA PKCS8 格式 签名/验签
    Chrome控制台Network请求过滤
    字符串拼接null值问题
    复制文件夹需要考虑的问题
    [闻缺陷则喜]关于boost的想法
    公共库开发组
    docker-compose 一键部署分布式配置中心Apollo
  • 原文地址:https://www.cnblogs.com/chyong168/p/2256173.html
Copyright © 2011-2022 走看看