javascript - 未捕获的 ReferenceError:未定义 helloSpeaker
问题描述
我是 JavaScript 新手,正在尝试编写一些代码,但我无法让它工作。我也定义了 jQuery,但它并没有解决问题。它说:
未捕获的 ReferenceError:未定义 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>
解决方案
您只想访问传入的name
参数,您可以使用 just name
, not 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
(全局)对象是不好的做法,因此除非您有某些特殊原因,否则应避免这样做。
推荐阅读
- python - 管道 PCA,我可以从这个内置函数中提取加载向量吗
- soap - 如何将身份验证标头从一个soap请求传递到SnapLogic中的另一个soap请求
- c++ - 在 C++ 的 while 循环中使用 pow() 函数
- mysql - SQL 查找全年五个月内一致搜索的用户
- c# - 模型未更改时,代码优先实体框架删除并重新创建表
- swift - 如何在 MKMapView 中调整自定义注释图钉图像的大小?
- julia - 如何在 Julia 的复合类型中指定条件?
- cypress - 为什么 Cypress.io 使用字符串断言类型选择器,有哪些替代方案?
- android - 如何找出手机执行我的 Toast 的原因?
- macos - 将带有行号的新列添加到管道分隔文件