代碼1嵌套函數結構,使setInterval函數unvisible
<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()",1000);
}
</script>
</head>
<body onload="startTime()">
<div id="text"></div>
</body>
</html>
它成功地工作,現在在開始時間函數嵌套函數的showTime。
CODE2
<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()",1000);
}
</script>
</head>
<body onload="startTime()">
<div id="text"></div>
</body>
</html>
錯誤發生,ReferenceError: showTime is not defined
。
1.對於代碼1,setInterval函數中雙引號的含義是什麼?
2.對於code2,爲什麼showTime可以從startTime中調用,比如在code1中?
字符串版本實際上是調用和有效的的setTimeout或setInterval的......使用'的eval()'內部...作用域是行不通的,雖然 – charlietfl
的eval()在內部用來處理這 HTTPS ://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setInterval –
好的,但是當使用'eval()'時,javascript將在全局空間中尋找'showTime',它不是當下。我試過我的解決方案,它的工作原理。 –