HTML5学堂:每天一道题,强壮程序员!今日主要涉及12.16日关于函数返回值的题目解答,以及一道涉及闭包的题目。
12.16真题题目如下,最终输出的结果是多少?
<script>
(function f(f){
return typeof f();
})(function(){ return 1; });
</script>
本题目的答案是:返回的内容为 —— "number"。
首先我们定义了一个函数,然后立即运行了这个功能函数。还记得匿名函数的执行方法吗?——> "(function(){})();",此处我们也是通过同样的方法,让上面的那个函数立即执行。之后我们向这个函数中传入了一个参数,在f这个功能函数当中,有一个名为f的参数,但是这个f和函数的f不是同一个意思,换句话说,可以换为如下的代码:
<script>
(function f(f2){
return typeof f2();
})(function(){ return 1; });
</script>
看如上的代码,应该就比最初的代码简单一些了,f这个函数运行的结果是f2函数运行结果的数据类型(typeof)。f2这个函数其实就是我们最初传入的那个函数——("function(){return: 1;}")运行的结果是1,typeof 1,自然就是"number"了。
<script>
var fn = function(i){
return function(){
return i++;
}
}(10);
var a = fn();
var b = fn();
console.log(a);
console.log(b);
</script>
关于每日代码练习题的答案和解析,我们会在明日文章当中,发布相关答案以及基本原理。(PS:周六日不发布题目)