Javascript - 全局导入如何使代码运行得更快?

时间:2017-01-09 05:38:29

标签: javascript

在研究JS的模块模式时,我了解了全局导入作为效率提示,但猜测它在非模块上下文中的工作方式可能相同,即以下具有全局导入的代码片段应该比没有导入的代码片段运行得更快。

我的问题是,如果我上面提到的猜测是正确的,全局导入如何使代码运行得更快?研究材料提到JS函数在被调用时和遇到变量时,将在搜索全局范围之前搜索本地范围以查找定义的任何值。我想,通过全局导入,新创建的局部变量l可以帮助指导程序/编译器更快地获取全局变量g的定义值,但程序/编译器仍然必须搜索但是,该值的全球范围。我觉得我还不清楚引擎盖下发生了什么。

请对此有所了解。

没有全局导入

var g = 5;
var functionName = function() {
    var i = 2;
    var j = 6;
    console.log(i + j + g);
};
functionName();

VS

全局导入

var g = 5;
var functionName = function(l) {
    var i = 2;
    var j = 6;
    console.log(i + j + l);
};
functionName(g);

1 个答案:

答案 0 :(得分:0)

我认为你混淆了几个主题。

  1. 本地/全球范围。
  2. 模块
  3. global object
  4. 本地/全球范围

    var a = 10;
    function foo(){
        var a = 20;
        return a;
    }
    // will return 20, not 10 in global scope
    console.log(foo());
    

    模块

    使用标准方式导入/导出node.js和其他

    中的模块
    // import module
    var foo = require('foo');
    
    // export function
    module.exports = bar;
    

    global对象

    node.js中用作"全局对象",应避免使用。

    a = 10;
    
    // outputs 10
    console.log(global.a);
    

    更多信息:

    您想了解的有关JavaScript范围的所有内容

    https://toddmotto.com/everything-you-wanted-to-know-about-javascript-scope/

    JavaScript中的全局变量

    https://snook.ca/archives/javascript/global_variable