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

计时方法之——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.οnclick=functionName(){}这样的表示方法赋值。

以前看书只觉得都这么写,也就这么心安理得的用,不去探究背后的原因,所以导致有些小细节总是不注意,以后注意,书上的每个细节的处理方式都是有深层逻辑在的,要知其然知其所以然!!!仔细仔细仔细,淡定不浮躁。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值