Hosting机制:在函数作用域或者全局作用域中通过关键字var声明的变量,无论实际上是在哪里声明的,都会被当作在当前作用域
顶部声明的变量。
function getValue(conditon) {
if (conditon) {
var value = "blue"
return value;
} else {
return null
}
}
变量提升后
JavaScript引擎会将getValue函数修改成这样
function getValue(conditon) {
var value;
if (conditon) {
value = "blue"
return value;
} else {
return null
}
}
变量value被提升至函数顶部,而初始化操作依旧停留在原处,这意味着else也可以访问到value该变量,由于此时变量尚未初始化,所以其值为undefined