HTML5学堂:每天一道题,强壮程序员!今日主要涉及昨日题目(计时器、单线程、Date对象知识)的解答,以及一道涉及数据类型、NaN相关知识的题目。
昨日真题题目如下,最终输出的结果是多少?
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>HTML5学堂 - H5course</title>
<link rel="stylesheet" href="reset.css">
</head>
<body>
<script>
var curDate = new Date();
setTimeout(function(){
console.log('a');
}, 500);
while(new Date() - curDate<1000){
}
</script>
</body>
</html>
本题目的答案是:在运行1秒之后,控制台中打印出了a这个字符。
while循环自不必说。解释一下代码:在代码的第十行,获取了一下当前时间,之后原本是希望将计时器的代码于500毫秒之后放置于JS的执行队列当中,但是正好后面有一个while循环,于是运行while循环语句,每次运行循环时均会再次获取时间,将该时间与之前的首次时间做差值,达到1000毫秒之后才可以跳出循环,也就意味着,在线程当中,while循环语句占据了1000毫秒的位置,这也就让计时器中的代码延迟了500毫秒才能够执行。
答案解析:本题目主要涉及JavaScript高级计时器
<script>
var str = 'H5course';
var num = parseInt(str);
if(num == NaN) {
alert(NaN);
} else if(num == 123) {
alert(123);
} else if(typeof num == 'number') {
alert('number');
} else {
alert('str');
}
</script>
关于每日代码练习题的答案和解析,我们会在明日文章当中,发布相关答案以及基本原理。(PS:周六日不发布题目)