查询JavaScript代码的范围

时间:2014-04-13 19:48:01

标签: javascript python

如果我在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解释器环境的模块吗?

2 个答案:

答案 0 :(得分:1)

  

以下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

答案 1 :(得分:0)

使用Javascripts variable hosting,您的代码将以这样的方式执行:

var bar;
var foo;

foo = function(){
      return bar;
};

foo();

bar = 3;

foo();

并且,如上所述,这将全局范围内运行,在全局级别创建变量foobar