在研究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);
答案 0 :(得分:0)
我认为你混淆了几个主题。
global
object 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);
更多信息:
https://toddmotto.com/everything-you-wanted-to-know-about-javascript-scope/