为什么将外部函数中定义的对象重新分配给外部声明的相同变量名称会给出错误?

时间:2016-05-24 19:25:50

标签: javascript

为什么typeof的{​​{1}}未在以下代码中定义?

b

2 个答案:

答案 0 :(得分:2)

因为您使用声明avar b函数范围内初始化一个新变量。

var b在赋值(b = b)之前初始化并运行,因此它将刚刚初始化的空值分配给自身。

要更改输出,您可以跳过var声明和typeof b输出“功能”:

var b = function() {}

var a = function() {
    b = b;
    console.log('typeof function_b:', typeof b); // Outputs "function"
}
a();

答案 1 :(得分:0)

那是因为变量首先声明(var b),然后分配b = b。声明后,该范围内为undefined,因此您需要为其分配undefined