`
444878909
  • 浏览: 640618 次
文章分类
社区版块
存档分类
最新评论

面试题20130909

 
阅读更多

  下面是一个小小的面试题,判断一下alert(g())的值是什么就可以了。


var f = function() {return true;};
var g = function() {return false;};
(function() {
   if (g() && [] == ![]) {
	f = function f() {
	   return false;
	};
	function g() {
	   return true;
	}
   }
})();

alert(![]) //返回是false
alert(typeof ![]) //返回是boolean
alert([] == ![]) //返回是true
alert(g() && ([] == ![]))  //返回是true

alert((g() && []) == ![])  //返回是false


alert(g())//返回是false


  分析:首先两个函数,f运行之后返回true,g运行之后返回false。下面是一个闭包的写法,其中里面有个判断。因为g()是false那么就返回false。&&和= = 同时作为判断条件的时候,可以看成g() && ([] == ![]),那么这样一来就好判断了因为g()返回的是false,所以这个条件将最终返回false,即if中的不执行。所以alert(g())返回是false


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics