javascript提升和执行上下文

时间:2018-03-27 15:41:41

标签: javascript

var employeeId = 'abc123';

function foo() {
    employeeId = '123bcd';
    return;

    var employeeId = function(){}
}
foo();
console.log(employeeId);

我是javascript编程的新手,有人可以向我解释为什么以上 输出是' abc123'不是{ 123bcd',我认为employeeId是在里面定义的 foo()应该是全局变量并覆盖外部变量,我错了吗?

1 个答案:

答案 0 :(得分:0)

当你写:

var employeeId = function(){}

JavaScript实际上提升employeeId,代码变为:

function foo() {
    var employeeId;
    employeeId = '123bcd';
    return;

    employeeId = function(){}
}

由于在函数内声明的var具有与功能块相同的范围,因此它不会覆盖外部employeeId