您的位置:首页 > Web前端 > JavaScript

js笔试题

2015-08-18 17:14 489 查看
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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: