#javascript #html #jquery
#javascript #HTML #jquery
Вопрос:
Я новичок в JavaScript и пытаюсь что-то закодировать, но у меня не получилось заставить это работать. Я также определил jQuery, но это не решило проблему. В нем говорится:
Неперехваченная ошибка ссылки: helloSpeaker не определен
(function(window) {
var helloSpeaker = {};
helloSpeaker.speak = function(name) {
console.log(speakWord " " helloSpeaker.name);
}
var speakWord = "Hello";
window.helloSpeaker = helloSpeaker;
}(window));
//script.js
(function() {
var names = ["Yaakov", "John", "Jen", "Jason", "Paul", "Frank", "Larry", "Paula", "Laura", "Jim"];
for (var i = 0; i < names.length; i ) {
var firstLetter = names[i].charAt(0).toLowerCase();
if (firstLetter === 'j') {
byeSpeaker.speak(names[i]);
} else {
helloSpeaker.speak(names[i]);
}
}
})();
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Module 4 Solution Starter</title>
<script src="SpeakHello.js"></script>
<script src="SpeakGoodBye.js"></script>
<script src="script.js"></script>
<script language="JavaScript" type="text/javascript" src="js/jquery-3.5.1.min.js"></script>
</head>
<body></body>
</html>
Комментарии:
1. пожалуйста, попробуйте указать ошибку, которую вы получаете
2. пожалуйста, вставьте все ваши коды и объясните, чего вы хотите достичь
3. Вы показали код, который определяет
helloSpeaker()
, но не код, который его использует и вызывает ошибку.4. @Berg_Durden это не должно иметь значения, поскольку объявление переменной поднимается в начало определения функции (инициализация происходит там, где она записана).
5. Я поместил ваш код во фрагмент, где он работает нормально, вплоть до того момента, когда вы вызываете
byeSpeaker
, но это просто потому, что он не определен в примере. Показанный вами код не демонстрирует проблему, которую вы описываете
Ответ №1:
Вы просто хотите получить доступ к переданному name
аргументу, который вы выполняете с помощью just name
, а не helloSpeaker.name
.
(function(window) {
var helloSpeaker = {};
helloSpeaker.speak = function(name) {
console.log(speakWord " " name);
}
var speakWord = "Hello";
window.helloSpeaker = helloSpeaker;
}(window));
//script.js
(function() {
var names = ["Yaakov", "John", "Jen", "Jason", "Paul", "Frank", "Larry", "Paula", "Laura", "Jim"];
for (var i = 0; i < names.length; i ) {
var firstLetter = names[i].charAt(0).toLowerCase();
if (firstLetter === 'j') {
//byeSpeaker.speak(names[i]);
} else {
helloSpeaker.speak(names[i]);
}
}
})();
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Module 4 Solution Starter</title>
<script src="SpeakHello.js"></script>
<script src="SpeakGoodBye.js"></script>
<script src="script.js"></script>
<script language="JavaScript" type="text/javascript" src="js/jquery-3.5.1.min.js"></script>
</head>
<body></body>
</html>
Кроме того, плохой практикой является прикрепление новых свойств и методов к window
(глобальному) объекту, поэтому, если у вас нет какой-либо особой причины для этого, вам следует избегать этого.