提升内部函数 - 内部函数和同名变量 - 输出?
Hoisting inside function - inner function and variable having same name - Output?
function y() {
var x = 'hi';
function x() {
return 'bye';
};
return x(); // x is not a function
return x; // 'hi'
}
console.log(y())
无法执行此函数。有人可以解释一下吗?
函数和变量声明已提升。函数声明也提升了值的赋值。
所以function x
和var x
都在当前范围内创建了一个名为x
的变量。 function x
还为该变量分配了一个函数。
具有 =
的分配未提升。
因此 x = 'hi'
用字符串覆盖该函数。
function y() {
var x = 'hi';
function x() {
return 'bye';
};
return x(); // x is not a function
return x; // 'hi'
}
console.log(y())
无法执行此函数。有人可以解释一下吗?
函数和变量声明已提升。函数声明也提升了值的赋值。
所以function x
和var x
都在当前范围内创建了一个名为x
的变量。 function x
还为该变量分配了一个函数。
具有 =
的分配未提升。
因此 x = 'hi'
用字符串覆盖该函数。