HTML5学堂:新的一年,新的开始~!元旦快乐~!每天一道题,强壮程序员!今日主要涉及去年12.30日题目的解答,以及一道涉及日期对象的题目。
12.30日真题题目如下,最终输出的结果是多少?
<script>
var str = "h5course";
function test() {
console.log(str);
var str = "HTML5学堂";
console.log(str);
}
test();
</script>本题目的答案是:undefined、HTML5学堂。
上述的代码中,你可能会误以为函数中的第一行会输出“h5course”,因为代码还没有执行到var语句声明局部变量的地方。其实并不是这样的,由于函数作用域的特性,局部变量在整个函数体始终是有定义的。
尽管这样,也只有在程序执行到var语句时,局部变量才会真正的被赋值。由此可以总结一句话:将函数内的变量声明提前到了函数体顶部,同时变量初始化了之前位置的变量。所以上面这道题的第一个str输出undefined;第二个str因为它的上一行代码进行了赋值初始化,且其本身在函数体内都有定义,所以输出“HTML5学堂”。
接下来我们再来一题与日期对象相关的题目吧——>
<script>
var now = new Date();
console.log(typeof (now + 1));
console.log(typeof (now - 1));
console.log(now == now.toString());
console.log(now > (now - 1));
</script>关于每日代码练习题的答案和解析,我们会在明日文章当中,发布相关答案以及基本原理。