码迷,mamicode.com
首页 > Web开发 > 详细

js笔试题

时间:2015-08-18 19:30:13      阅读:130      评论:0      收藏:0      [点我收藏+]

标签: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笔试题

标签:js

原文地址:http://blog.csdn.net/u014682977/article/details/47754065

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!