关于题目中的timer问题。

来源:1-20 选择练习

夜魇丶

2019-07-02 22:30:38

<!DOCTYPE html>

<html>

    <head>

        <meta charset="UTF-8">

        <title>打开/关闭页面</title>

    </head>

    <body>

       <input type="text" id="txt">

       <input type="button" value="开始">

       <script type="text/javascript">

           //补充代码

           var num=0,

           timer=null,

           begin=document.getElementsByTagName("input")[1],

           text=document.getElementById("txt");

           begin.onclick=function numCount(){

            text.value=num;

            num=num+1;

            timer=setTimeout(numCount,1000);

           }

       </script>

    </body>

</html>


我把代码试了一下,点击开始之后,文本框里的数从0开始,每隔一秒数字+1,一直循环加下去。

但是代码里面加粗的部分我没办法理解。

  1. 为什么要给timer赋值为null,我试着不给timer赋值,或者赋值成字符串、数组或者undefined,代码都可以照常运行,请问这里赋值成为null有什么特别的用意吗?

  2. timer=setTimeout(numCount,1000); 我把这个代码等号前面的都删掉了。

    直接是setTimeout(numCount,1000);  代码照常运行,请问这里加timer…有什么特别的作用吗?

辛苦老师解答,感谢

写回答

1回答

好帮手慕夭夭

2019-07-03

你好同学,解答如下:

1.null表示空值,就是一个变量在定义的时候还不知道要赋值什么,可以先赋值为null,表示这个变量的值为空。当然了,直接不给它赋值也是可以的,直接var timer。默认就是undefined,表示没有给变量赋值。null还有一个作用是如果一个变量想要以后保存为对象,那么可以赋值为null,表示一个空指针对象。

定义变量初始化的时候只是为了让我们更清楚的知道这个变量以后要干什么,例如赋值为空字符串,那么表示以后用来保存字符串。因为下面会重新为变量赋值的,所以一般情况下,赋值为其他类型也不会有影响。像本代码中就是,下面timer已经赋值了定时器,所以初始化的时候赋值成其他类型也不会有影响。建议在定义变量的时候不要随意赋值,根据它以后的用途赋值更好。例如定时器赋值为null或者直接var timer 不赋值就行。

http://img.mukewang.com/climg/5d1c0d0b000122ec05420327.jpg

2.在本段代码中,定时器赋值给timer是没有作用的,这个是以后清除定时器会用到。即clearTimeout(timer)中括号中要指定清除哪一个定时器,如果不给定时器赋值在变量上,那么没有办法清除哦。

祝学习愉快,望采纳。

2

0 学习 · 40143 问题

查看课程