如果我在python代码下运行,
def f():
return bar
foo = f
foo()
bar = 3
foo()
as
python file.py
然后此代码将在python解释器的__main__
模块范围内。同样,我想知道,以下JavaScript代码的范围是什么?
var foo = function(){
return bar;
};
foo();
var bar = 3;
foo();
是否将JavaScript代码加载为类似于python解释器环境的模块?
最佳答案
以下JavaScript代码的范围是什么?
这取决于环境。
对于客户端JavaScript,该片段将直接在全局范围内执行,从而使foo
和bar
成为全局变量,并成为全局对象window
的属性。
var foo = 'bar';
console.log('foo' in window); // true
console.log(window.foo, foo); // 'bar' 'bar'
但是,其他环境已经实现了模块规范,例如CommonJS中的模块规范,并且可以定义为每个脚本文件指定自己的范围。
var foo = 'bar';
console.log('foo' in global); // false
exports.foo = foo; // make available to other modules
关于javascript - 查询JavaScript代码范围,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23047614/