如果我在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,该片段将直接在全局范围内执行,从而使foobar成为全局变量,并成为全局对象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/

10-16 23:22