JS无法识别功能

时间:2019-01-12 19:57:10

标签: javascript html function

我有一个问题,即使我从另一个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中还有其他功能,并且调用它们就可以正常工作。

1 个答案:

答案 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);