gpt4 book ai didi

Javascript 提升代码片段

转载 作者:行者123 更新时间:2023-11-30 20:44:06 26 4
gpt4 key购买 nike

我正在浏览 JS 提升的代码片段。其中一个片段看起来像

var employeeId = 'abc123';

function foo() {
employeeId();
return;

function employeeId() {
console.log(typeof employeeId);
}
}
foo();

输出将是:函数

我已经阅读了关于提升的内容,根据我的理解,所有变量都将被视为在函数顶部声明并在其实际声明/定义行初始化。在这种情况下,employeeId 函数标识符将在函数顶部声明为 var employeeId,其值显然是 undefined,因此非常函数的第一行应该抛出错误。

请告诉我为什么输出是函数

最佳答案

var 声明和函数声明都被提升到它们出现的范围的顶部(按此顺序); varundefined 作为它们的值,函数的绑定(bind)将函数作为它们的值。只有在这完成之后,函数中的任何分步代码才会执行​​。

因此您的示例实际上与此相同:

var employeeId;                           // Declaration
function foo() { // Declaration
function employeeId() { // Declaration (shadows outer `employeeId`)
console.log(typeof employeeId);
}

employeeId();
return;
}
employeeId = 'abc123';
foo();

关于Javascript 提升代码片段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48930563/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com