这个问题困扰了我很久,一直没想通,后来找了大量的资料,算是明白了点,和大家分享一下,如果解释有问题希望大家指出,一起学习
<span style="font-size:18px;"><html>
<title>
JavaScript测试
</title>
<script type="text/javascript">
function showtime(){
<span style="white-space:pre"> </span>
var a=fun;
var b=fun();
<span style="white-space:pre"> </span> alert(a);
<span style="white-space:pre"> </span> alert(b);
}
function fun(){
return 5
}
</script>
<body onLoad="showtime()">
</body>
<html></span>
a是fun函数,b是5,如果没有返回值的情况下是undefined,这样就很容易想清楚这样一个问题
<span style="font-size:18px;"><html>
<title>
JavaScript测试
</title>
<script type="text/javascript">
function showtime(){
var dom = document.getElementById("time");
var date = new Date();
dom.innerHTML=date;
setTimeout(<span style="color:#ff0000;"><strong>show</strong></span>,1000);
}
function show(){
alert("test");
}
</script>
<body onLoad="showtime()">
当前时间:
<div id="time">
</div>
</body>
<html></span>
上面在延时的时候为什么写成
show有延时,写成
show()时候直接弹出对话框了,
因为show()本身就是一个结果,那么问题来了,那写成
"show()"为什么又可以了呢!
原因是:写成字符串的时候它会和eval()的执行原则一样,可以这样理解,把它当成了一段字符串格式的js代码执行,还是相当于一个函数的调用。
不知道能不能帮到你,如果你有更好的解释记得和我分享一下,一起学习