标签:js
f = function() {return true;}; g = function() {return false;}; (function() { if (g() && [] == ![]) { f = function f() {return false;}; function g() {return true;} } })(); console.log(f());
分析以上代码,结果为false.
函数定义的两种形式:
(1)var a = function(){}
这种只能先声明后调用
(2)function a(){}
这种可以先调用后声明
所以if中的g()在自己匿名函数的作用域中先找到
function g() {return true;}
然后[] == ![]解释:typeof []-->object类型但是空,![]-->Bealean类型是false,所有的空或0都是false.false==false返回true
最后进入if(true)后,改变了全局的f变量,所以返回的是false.
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:js
原文地址:http://blog.csdn.net/u014682977/article/details/47754065