您的位置:首页 > Web前端 > JavaScript

转行前端自我学习养成记之js学习记录篇——<DOM编程艺术>学习记录(二)

2018-01-12 22:44 302 查看
计时方法之——setTimeout(obj.,interval)

说到定时计时的方法,属于浏览器对象模型(BOM)里的方法。有两个:setTimeout与setInterval,而我在学习<DOM编程艺术>里,着实被setTimeout坑了一把。

setTimeout是在一定时间间隔“interval”执行一段代码或者是函数,一般是函数,于是就有两种表达方式setTimeout(function,interval)跟setTimeout(‘function()’,interval),咋一看也没啥区别,不就多了分号多个括号吗,我也是这么认为的,于是在第十章内容设置元素动画的时候,就吃了大亏,也怪自己看书不仔细。

在说到将对象动画函数抽象化时,书中将function move(){}赋了参数,以便更加灵活。具体的函数方法就不列了,就写最后一句:setTimeout(“moveElement(' ”+elementID+" ',"+final_x+" ,"+final_y+","+interval+")",interval),看到这么长的一段,也没在意,就以为是这种setTimeout('function()',interval)形式,于是自己实际敲代码的时候,就按照这种思路,将函数赋参数原原本本写进去,然后执行console控制台一直提醒:final_x未定义。顿时懵逼,死活找不到原因,仔仔细细翻看书是怎么写的,就是把那一长串的代码“视而不见”!!!最终还是在百度的帮助下,重新认识了这个定时方法,才知道,setTimeout()里的第一个参数如果是函数的形式,可以直接用函数名functionName,不用引号不用括号,如果是代码串的形式,就得是字符串类型,而因为参数又可以当作是变量,所有为了不被强行转化为字符串类型,才需要用分号区分开,就好像做变量加字符串运算一样,都是var+“str”形式,所以才有了前面的一长串表示方法!通过度娘我也知道了函数表达式‘functionName()’其实是函数值了,而functionName才指代的是函数本身。所以才会有代码语句obj.onclick=functionName(){}这样的表示方法赋值。

以前看书只觉得都这么写,也就这么心安理得的用,不去探究背后的原因,所以导致有些小细节总是不注意,以后注意,书上的每个细节的处理方式都是有深层逻辑在的,要知其然知其所以然!!!仔细仔细仔细,淡定不浮躁。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: