HTML5学堂:每天一道题,强壮程序员!今日主要涉及12.17日关于闭包的题目解答,以及一道涉及字符串相关知识的题目。
12.17真题题目如下,最终输出的结果是多少?
<script>
var fn = function(i){
return function(){
return i++;
}
}(10);
var a = fn();
var b = fn();
console.log(a);
console.log(b);
</script>
该题目的结果是:10 11。
应该说考察的是闭包的最初“形态”。首先,fn()的结果是fn这个函数的返回值,也就是return后面的内容"function(){return i++;}",在这个函数当中,我们使用了i这个变量,那么这个变量是从哪里来的呢?该变量应当是通过参数传递进来,也就是10。通过闭包创建了一个临时的空间,用于存储i这个值,第一次调用的时候,return的是数字10,之后i进行了自增运算。之后再次调用时,i已经是11,自然就return了11这个值,之后i依旧是进行了自增运算。
<script>
var str = 'H5course';
str += str.length;
str.author = 'HTML5学堂';
console.log(str.author);
</script>
关于每日代码练习题的答案和解析,我们会在明日文章当中,发布相关答案以及基本原理。(PS:周六日不发布题目)