JS之setTimeout

源码如下,1秒后弹出锚点后面的数据

<script type="text/javascript">

var x=location.hash;
function aa(x){
alert(x);
}; setTimeout(
"aa('"+x+"')",1000); </script>

然后看了下setTimeout这个函数,用法如下:

语法

setTimeout(code,millisec)
参数描述
code 必需。要调用的函数后要执行的 JavaScript 代码串。
millisec 必需。在执行代码前需等待的毫秒数。

 

其实,这个code并不是指一个函数,而可能是多个,而且会依次执行,如下:

setTimeout("aa(alert(0),'1',alert(2),'3',alert(4));'5';alert(6)//)",1000);     

1. code其实是三个参数:

  aa(alert(0),'1',alert(2),'3',alert(4)) 

  ‘5’

  alert(6)//)

2. 先执行第一个aa,在把参数传给aa之前,会先看这些参数能不能执行,能的话先执行,所以首先依次输出 0,2,4

3. 然后传给aa函数的多个参数,aa只会执行第一个,也就是alert(0),输出 undefined ,如果 alert(0) 和 ‘1’ 调换一下,那么传入的是 '1',所以会输出 1

4. 然后执行下一个 ‘5’,不是一个函数,所以跳过

5. 再执行 alert(6)//) ,斜杠注释了后面多余的括号,所以输出 6

输出顺序是:0,2,4,undefined,6

posted @ 2017-11-02 22:17  镜花-水月  阅读(362)  评论(0编辑  收藏  举报