今天看到个题目,很疑惑,一直没想到答案,题目是这样的:
<script>
function g() {
console.log(123)
return true
}
;(function(){
console.log(g) //undefined
console.log(g()) //g is not function
if(g) {
function g() {
console.log(456)
return false
}
}
})()
console.log(g())
</script>
在自执行函数中,使用函数声明定义function也还是会变量提升的,既然提升了为什么还是undefind或者说为什么是g is not function?请大神们告知一二,谢谢
函数在新版浏览器是块级作用域的 有些老得不是