Javascript 一个简单的代码片段被解析了多少次?

Javascript 一个简单的代码片段被解析了多少次?,javascript,Javascript,何时动态编译。对正确的术语不太确定。但对于下面的代码段,它至少是IIFE在调用test之前不会运行的两倍。简而言之,动态编译的过程是什么 (function(){ function test() { var T = (function(){ // does not run until you call test }()); } test(); })(); 我不确定是否完全理解您要查找的内容,但整个代码片段将

何时动态编译。对正确的术语不太确定。但对于下面的代码段,它至少是IIFE在调用test之前不会运行的两倍。简而言之,动态编译的过程是什么

(function(){

    function test() {

        var T = (function(){
            // does not run until you call test
        }());

    }
    test();

})();

我不确定是否完全理解您要查找的内容,但整个代码片段将被一次性解析并存储为抽象语法树(或由现代JavaScript引擎编译成某种字节码)。当您调用
test

时,包含注释的代码将被执行一次。您如何期望函数在不调用它的情况下运行?拥有IIFE(如内部
test
)和在执行之前定义函数(如
test
)之间没有什么区别。。。我不确定你想知道什么。代码在任何情况下都只被解析一次。@Felix-我不明白你在说什么,关于那个小片段被解析了多少次……调用函数或将其用作IIFE之间真的没有区别……这就是你所说的……你提到IIFE与代码解析的关系,我只是说他们没有任何区别对这方面的影响。或者我误解了你说的话?作为一个侧面…函数什么时候被提升?@Hiro:函数声明总是被提升的。它认为你指的是函数定义(或者你有过的声明)在编译语言中,声明和定义是不同的…但是JavaScript中的声明并没有真正的相关性…有动态编译的在线资源吗?