js笔试题,回来总结的时候发现有2道题目写错了
(function(x){
delete x;
return x;
})(1); //1
(function f(){
function f(){return 1;}
return f();//2
function f(){return 2;}
})();
达达们麻烦解释一下输出结果的来龙去脉。另求授我以渔,每次笔试题遇到此类的题目,都有一些不会做的,归根到底是js底子太薄了,求助,理清上面题目的逻辑需要看js的哪方面知识,谢谢。
1,这两个都是自执行函数,第一个由于javascript中基本数据类型无法被删除,只能删除对象的属性,所以delete之后对x没有影响,第二个由于函数定义会提升到前面去,也就是这两个f函数在return语句之前被定义,所以后面一个覆盖前面一个,返回2
2,需要了解自执行函数,delete操作符,变量和函数提升(hoisting)就可以解这道题了吧。可以认真看一遍javascript权威指南,这样基础的东西就差不多都了解啦