function bar() {
return foo;
foo = 10;
function foo() {}
var foo = 11;
}
console.log(typeof bar());Run Code Online (Sandbox Code Playgroud)
typeof bar返回功能?!为什么不数?
JS 函数执行于JS 函数分两遍、三遍首先,引擎遍历代码,查找函数声明并将它们提升(=将它们移动到顶部),其次,它提升变量声明(除非已经提升了相同的名称),最后它运行“规范化”代码。
在您的代码片段中,引擎选择function foo并将其移动到函数的顶部。后续内容var foo将被忽略。
这会产生以下“标准化”代码:
function bar() {
function foo() {}
return foo;
foo = 10;
foo = 11;
}
Run Code Online (Sandbox Code Playgroud)
这解释了你的结果。
参考:声明绑定实例化,注意步骤 5 和 8。
| 归档时间: |
|
| 查看次数: |
1051 次 |
| 最近记录: |