JavaScript代码范围查询

JavaScript代码范围查询,javascript,python,Javascript,Python,如果我在python代码下面运行 def f(): return bar foo = f foo() bar = 3 foo() 作为python file.py,该代码将在python解释器的\uuuuuu main\uuuuu模块的范围内 类似地,我想知道,下面JavaScript代码的范围是什么 var foo = function(){ return bar; }; foo(); var bar = 3; foo(); JavaScript代码作为模块加载是否类似

如果我在python代码下面运行

def f():
    return bar

foo = f
foo()
bar = 3
foo()
作为
python file.py
,该代码将在python解释器的
\uuuuuu main\uuuuu
模块的范围内

类似地,我想知道,下面JavaScript代码的范围是什么

var foo = function(){
    return bar;
};

foo();
var bar = 3;
foo();

JavaScript代码作为模块加载是否类似于python解释器环境?

使用Javascripts
变量宿主
,您的代码将以如下方式执行:

var bar;
var foo;

foo = function(){
      return bar;
};

foo();

bar = 3;

foo();
如前所述,这将在全局范围内运行,在全局级别创建变量
foo
bar

下面的JavaScript代码的范围是什么

这取决于环境

对于客户端JavaScript,代码片段将直接在全局范围内执行,使
foo
bar
成为全局对象的全局和属性,
window

var foo = 'bar';

console.log('foo' in window); // true
console.log(window.foo, foo); // 'bar' 'bar'
尽管如此,其他环境已经实现了模块规范,例如来自的规范,并且可以定义每个脚本文件都有自己的作用域

var foo = 'bar';

console.log('foo' in global); // false

exports.foo = foo; // make available to other modules

Sham从mozilla.org上读到你可能会得到答案。不,我写了相同的答案(现在已删除),他在问其他问题。我想看看我的javaScript代码可以看到的全局对象窗口的所有属性是什么。我如何在javascript中做到这一点?在python中,我通过调用globals()@Sham来了解模块的作用域,您可以使用。否则,您至少可以使用.jonathan迭代可枚举属性。如果我需要学习javascript并运行您推荐的上述方法,那么我需要使用html吗?我们不能像使用Interpreter运行python一样运行javascript代码吗?我是说没有html代码?因为我以前从未编写过javascript,我想先学习javasscript作为语言,然后再考虑使用javascript(在浏览器中)。我该怎么做?你能为我提供一些资源吗?乔纳森,你认为我的问题在我之前的更新中有意义吗?我想和你们聊聊,了解一下反思我的javascript代码在window对象范围内的方式?