JS не распознает функцию

У меня проблема в том, что даже когда я правильно вызываю функцию из другого JS-скрипта, я получаю сообщение об ошибке, что эта функция не существует. У меня есть следующая функция в stopwatch.js:

function timeOut() {
        return time;
    }

Эта функция является частью функции-конструктора, а время - это переменная.

Я называю это так в main.js:

time = watch.timeOut();

часы - это объект, который я создал с помощью функции-конструктора.

У меня есть оба сценария в 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.info(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, и их вызов работает нормально.

Где watch? Где time?

Geno Chen 12.01.2019 20:58

Это не очень понятно. Что такое и где часы?

greedsin 12.01.2019 20:59

нам нужно намного больше кода, мы поможем вам

Nuno Sousa 12.01.2019 21:00

Кстати, ребята, это новый участник, не опускайтесь так скоро.

Nuno Sousa 12.01.2019 21:01

Обновите свой вопрос минимальным, полным и поддающимся проверке примером, демонстрирующим проблему, в идеале - запускаемым с использованием фрагментов стека (кнопка [<>] на панели инструментов; вот как это сделать). - meta.stackoverflow.com/questions/358992/…

gopigorantala 12.01.2019 21:03

Я пишу фрагмент сейчас, у меня просто вопрос, есть ли способ имитировать несколько сценариев JS?

Luc Schwan 12.01.2019 21:12
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
5
6
36
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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.info(time);

Сейчас работает, большое спасибо!

Luc Schwan 12.01.2019 21:58

Другие вопросы по теме