js 面试题理解

[code="javascript"]
f = function() {return true;};
g = function() {return false;};
(function() {
if (g() && [] == ![]) {
f = function f() {return false;};
function g() {return true;}
}
})();
alert(f()); // true or false ?
[/code]

为什么 []==![] 就是这里不懂了

code="js" {

if (g() && [] == ![]) {

//应该看成if((g() && [] )== ![])
//因为g()是false后面那个&&[]就没起作用 整个都是false
//![]也是false 所以if成立 进入if块内
f = function f() {return false;};

//重新定义f
function g() {return true;}

//这句没用
}

})();
alert(f());
//false
[/code]

:idea: