我有一个问题,即使我从另一个JS脚本正确调用了一个函数,也会收到该函数不存在的错误。 我在stopwatch.js中具有以下功能:
function timeOut() {
return time;
}
此函数是构造函数的一部分,时间是该函数的变量。
我在main.js中这样称呼它:
time = watch.timeOut();
watch是我使用构造函数创建的对象。
在主体结尾处,我在index.html中都有两个这样的脚本:
<script type="text/javascript" src="js/stopwatch.js"></script>
<script type="text/javascript" src="js/main.js"></script>
现在我得到以下错误代码:
main.js:86 Uncaught TypeError: watch.time is not a function
我找不到发生这种情况的原因
这是我将其剥离为问题的摘要:
//stopwatch.js
function stopwatch() {
var time = 3254; //Example Time
function timeOut() {
return time;
}
}
//main.js
var watch = new stopwatch();
var time;
time = watch.timeOut();
console.log(time);
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Timer</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<script type="text/javascript" src="js/stopwatch.js"> </script>
<script type="text/javascript" src="js/main.js"></script>
</body>
</html>
要补充的是,我在stopwatch.js中还有其他功能,并且调用它们就可以正常工作。
答案 0 :(得分:1)
关闭。 timeOut
函数在stopwatch
函数的范围内声明,但是没有任何迹象表明应该从该范围之外看到它。在这种情况下,执行此操作的一种简单方法是将其设置为this
函数中stopwatch
上的属性。像这样:
function stopwatch() {
var time = 3254; //Example Time
this.timeOut = function() {
return time;
};
}
var watch = new stopwatch();
var time = watch.timeOut();
console.log(time);