javascript - 这些 javascript 面试问题的答案的解释是什么?
解决方案
第一个例子非常简单。被employeeId
定义在外面foo function
,foo function
被调用,一个新的值被分配给employeeId
,从它返回foo function
并打印该值。
第二个示例中的棘手部分function employeeId(){}
是function foo()
. 当代码执行并且您在 中时function foo
,function employeeId
将被定义/提升。您可以认为它就像您正在创建一个变量employeeId
并在那里分配了一个函数。因此,当代码实际执行时,它将使用function employeeId
已定义/提升的 this,并将使用值“123bcd”覆盖它。这样,外部作用域的employeeId 保持不变。
编辑 1:当我在寻找提供额外的资源时,这里有一个关于提升的问题和你发布的同样的问题:JavaScript 'hoisting'