此代碼不斷回傳 (names[i]) 的“未定義”。當我 console.log() 它回圈遍歷陣列并列印 Hello (names[i]) 或 Good Bye (names[i]) 我做錯了什么?
(function (window) {
var helloSpeaker = {};
helloSpeaker.name = " ";
var speak = "Hello";
helloSpeaker.speak = function () {
console.log(speak helloSpeaker.name);
}
window.helloSpeaker = helloSpeaker;
})(window);
(function (window) {
var byeSpeaker = {};
byeSpeaker.name = " "
var speak = "Good Bye"
byeSpeaker.speak = function () {
console.log(speak byeSpeaker.name);
}
window.byeSpeaker = byeSpeaker;
})(window);
(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') {
console.log(byeSpeaker.speak(names[i]));
} else {
console.log(helloSpeaker.speak(names[i]));
}
}
})();
uj5u.com熱心網友回復:
您的問題是您將名稱作為引數傳遞給speak函式,但是,在您的定義中speak根本不接受引數。
您可以通過像這樣定義它來修復它:
helloSpeaker.speak = function (name) {
console.log(speak name);
}
byeSpeaker.speak = function (name) {
console.log(speak name);
}
另外,在這里我為您清理了邏輯。
(function () {
class Speaker {
constructor(greeting) {
this.greeting = greeting;
}
speak(name) {
return `${this.greeting}, ${name}`;
}
}
const helloSpeaker = new Speaker('Hello');
const byeSpeaker = new Speaker('Bye');
const names = [
'Yaakov',
'John',
'Jen',
'Jason',
'Paul',
'Frank',
'Larry',
'Paula',
'Laura',
'Jim',
];
names.forEach((name) => {
const firstLetter = name.charAt(0).toLowerCase();
const result = firstLetter === 'j' ? byeSpeaker.speak(name) : helloSpeaker.speak(name);
console.log({result});
});
})();
您的另一個問題是您的 speak 函式沒有回傳任何內容,而是undefined隱式回傳。
例子:
function noReturn() {
console.log('inside noReturn')
// no return statement, so implicitly it's as though you wrote:
// return undefined;
}
console.log('noReturn result:', noReturn())
uj5u.com熱心網友回復:
你得到了 undefined 因為你打電話:
console.log(byeSpeaker.speak(names[i]));
console.log(helloSpeaker.speak(names[i]));
但它一無所獲。這就是為什么你沒有定義。你可以修復它。只需呼叫該函式,而不是記錄它。像那樣:
byeSpeaker.speak(names[i]))
helloSpeaker.speak(names[i])
希望你明白了。謝謝你
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/504913.html
標籤:javascript 数组 循环 谷歌浏览器
