在link1上运行JavaScript代码(上半部分)和link2上的python代码(下半部分)后检索下图
我的问题:
我看到名字foo
& bar
已经位于JavaScript执行环境(EE)的全局框架(蓝色)中,与python的EE不同?在开始解释之前,JavaScript解释器是如何知道这两个名字的?
答案 0 :(得分:2)
在开始解释之前,JavaScript解释器是如何知道这两个名字的?
这就是所谓的hoisting。在引擎执行任何代码行(函数)之前,它会查找所有变量和函数声明,并在当前环境(§10.5, steps 5 and 8)中创建绑定。在变量声明的情况下,值为undefined
,因为尚未进行赋值。
显然 Python 不会那样工作,但我对其内部工作方式不够熟悉,不能给出权威的答案。