CODE1
<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>
它成功运行,现在在startTime函数中嵌套showTime函数。
码2
<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.对于code1,setInterval函数中双引号的含义是多少?
2.对于code2,为什么showTime可以从startTime调用,例如在code1中?
答案 0 :(得分:0)
"showTime()"
是一个不可调用的字符串
正确的方法是:
function startTime(){
function showTime(){
var c=document.getElementById("text");
var nowTime=new Date();
c.innerHTML="time is "+nowTime.toLocaleTimeString();
}
setInterval(showTime,1000);
}
答案 1 :(得分:0)
我认为这可能是评估范围问题。
function test() {
var x = 2,
y = 4;
console.log(eval("x + y")); // Direct call, uses local scope, result is 6
var geval = eval;
console.log(geval("x + y")); // Indirect call, uses global scope, throws ReferenceError because `x` is undefined
}
test();
&#13;
内部setInterval还使用eval确定函数。 因此,由于直接和间接调用的这种行为,它将引发参考错误。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval