<script>
f = function () {
return true;
};
g = function () {
return true;
};
(function () {
if (g() && []==![]){ //12行
f=function f(){return false;};
function g(){return true;}
}
})();//16行
alert(g());
alert(f());
</script>
执行结果如下
function g(){return true;}
这句理论上属于函数声明,应该会变量提升才对,12行为什么会产生g()
不是函数的错误呢?
另外:最后的alert(g());
这句话和闭包中定义的function g(){return true;}
有没有关系啊?
最后,闭包中f=function f(){return false;};
这个f和外边的f有关系吗?
希望各位不吝赐教!