showTime函数为何不能内置

<html>  
<head>  
<script type="text/javascript"> 
    function showTime(){
            var c=document.getElementById("text");
            var nowTime=new Date();
            c.innerHTML="time is  "+nowTime.toLocaleTimeString();
            }    
    function startTime(){        
        setInterval("showTime()",50);
        }

</script>  
</head>  
<body onload="startTime()">  
<div id="text"></div>  
</body>  
</html> 

这个程序运行良好,一个简单的clock,正常运行。
我现在做一个简单的调整
<html>  
<head>  
<script type="text/javascript">         
    function startTime(){
        function showTime(){
            var c=document.getElementById("text");
            var nowTime=new Date();
            c.innerHTML="time is  "+nowTime.toLocaleTimeString();
        }        
        setInterval("showTime()",50);
    }    
</script>  
</head>  
<body onload="startTime()">  
<div id="text"></div>  
</body>  
</html> 

运行出现错误 
ReferenceError: showTime is not defined
为何会这样?
showTime这个函数明明在startTime这个函数的开头部位,为何会找不到?
请解释一下整个函数运行的过程。
阅读 4k
2 个回答

showTime 函数在全局作用域中找不到了

setInterval的调用是在全局作用域下调用的,所以如果你第一个参数是字符串的话,字符串里的函数必须也在全局作用域下定义,他才能找到该函数。否则你需要将第一个参数改为showTime,或者function(){showTime();}

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题