一道腾讯js面试题
?
题目如下:
?
?
f = function() {return true;}; g = function() {return false;}; (function() { if (g() && [] == ![]) { f = function f() {return false;}; function g() {return true;} } })(); alert(f()); ??
?
?
没有问题的浏览器会返回:false
?
Firefox不会执行到if条件内部,返回:true
?
IE会执行到if条件内部(但把if内部的f作为局部变量处理了),最后返回:true
?
[转自:http://hi.baidu.com/xiaogui2go/blog/item/4b966b1741659d1ec93d6de0.html]
?
注:针对IE,文章最后提到“IE会执行到if条件内部(但把if内部的f作为局部变量处理了),最后返回:true”,括号中那句描述容易让人产生误解:只有if内部的f会最做为局部变量处理。实际上,只要是在函数内部定义的变量,即使没有加var修饰符,也会作为该函数的局部变量。这点与其他非IE浏览器表现不一样。
?