源码如下,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