学习javascript,跟着书上写了下onload事件的响应:
(test 1)
<head>
<script ...>
window.onload=function()
{
语句...alert....
}
</script>
</head>
测试很顺利,然后自己又试了下:
(test 2)
<head>
<script ...>
window.onload= new function()
{
语句...
}
</script>
</head>
结果不一样! 前者的对话框弹出时页面内容已经载入,而后者对话框弹出时页面内容未载入(前面是否是window.onload都一样)。
刚学javascript,不知道其中原理,网上查了下:
(test 1) 是匿名函数,因为只在此时调用,没必要一定要有函数名。如果显示定义,则等同于:
(test 1等同)
<head>
<script ...>
var fun= function() {...}
window.onload=fun;
</script>
</head>
这里只是指定onload事件由fun函数来响应。原来(test 2)不仅是函数定义,调用同样也执行了,应该是定义了函数对象的实例?等同于:
(test 2等同)
<head>
<script ...>
var fun= function() {...}
window.onload=fun();
</script>
</head>
此处加了()操作符,函数直接就执行了(因为在head中调用)!即使前面没有window.onload也一样,因此记得为onload事件关联函数不要加执行操作符。