1 回答
TA贡献35条经验 获得超11个赞
JavaScirpt中代码的执行顺序是从上到下顺序执行。像你发的这段代码,从上到下,先执行完addCount(),然后再开始执行setTimeout("noneAds()", 5000);
同步代码的程序顺序执行的方式是学习编程的第一课,异步调用并不会阻止代码的顺序执行,而是在将来的某一个时刻触发设置好的逻辑,所以我们并不知道逻辑什么时候会被调用 只能定义当触发的时候逻辑是什么 只能等待,同时可以去处理其他的逻辑 setTimeout就是这样的一个异步调用。
TA贡献119条经验 获得超250个赞
要搞清楚setTimeout()方法的使用:用于在指定的毫秒数后调用函数或计算表达式并且只执行 code 一次。
这个展开与收起效果只执行了一次。也就是说当页面加载完成以后,先执行addCount()函数,当到达展开一定高度后,就开始执行setTimeout()方法,5000ms后开始执行noneAds()函数。
P.S 就我目前所知,JavaScript函数的同步与异步是Ajax中术语,相信你学到那就会渐渐明白了。
希望对你有帮助^_^
TA贡献37条经验 获得超15个赞
javascript代码是同步的,单线程的,就是由上往下执行,按照我的理解来说,只有ajax是异步的执行了,线程遇到ajax的代码段时,主线程不会去执行ajax里的代码,而是跳过这段代码。那ajax里的代码谁去执行呢?这个任务交给了浏览器的线程(不是javascript的线程,javascript的线程已经跳过了再往下执行别的代码,同一时间点执行了多个任务,这个也许就是异步吧),然后等主线程上任务都执行完了之后,ajax再将执行的结果返回进行处理,就是执行success function(){...}里面的方法。而setTimeout()其实并不是真正意义上的异步,不会同一时间点执行多个任务,它的作用的,将setTimeout()包裹的代码段移动到执行任务的最后,而里面的那个时间参数表示的是执行这段代码的最短时间,就算参数为0,也会放到最后执行。
TA贡献3593条经验 获得超0个赞
添加回答
举报