2017-12-26 8 views
-3

私は以下のコードを持っていて、なぜオブジェクトプロパティがリストされる前に「未定義」になっているのか理解できません。明らかに間違ったことをしていますか?未定義 - 迷惑なJavaScriptのバグ

私がJavaScriptの初心者だと分かるように、どんな助けも大変ありがとうございます!

let player_profile; 
 

 
const players = [ 
 
    { 
 
     name: "George Ford", 
 
     age: 22, 
 
     position: "Back" 
 
    }, 
 
    { 
 
     name: "Ben Youngs", 
 
     age: 28, 
 
     position: "Forward" 
 
    } 
 
]; 
 

 
for (let i = 0; i < players.length; i++) { 
 
    player_profile += '<h2>Name: ' + players[i].name + '</h2>'; 
 
    player_profile += '<p>Age: ' + players[i].age + '</p>'; 
 
} 
 

 
document.write(player_profile);

+0

あなたは 'player_profileを初期化しません。 'の最初の' + = 'では、その値は' undefined'です。 – Pointy

+0

'player_profile'は、最初に連結したときには未定義です。空の文字列に初期化する必要があります。 –

+0

'player_profile'を初期化する必要があります:' let player_profile = ""; –

答えて

2

let player_profile;変数を宣言し、(暗黙的に)それをundefinedの初期値を与えます。

player_profile += some_stringに文字列を追加します。これにより、undefinedが文字列に変換され、その結果は"undefined"になります。

あなたは初期値は空の文字列になりたい場合は、そのように明示的に言う:

let player_profile = ""; 
+0

ありがとう!巨大な助け! – trailrunner89

2

あなたplayer_profileを初期化していませんでしたので:

let player_profile = ""; 

const players = [ 
    { 
     name: "George Ford", 
     age: 22, 
     position: "Back" 
    }, 
    { 
     name: "Ben Youngs", 
     age: 28, 
     position: "Forward" 
    } 
]; 

for (let i = 0; i < players.length; i++) { 
    player_profile += '<h2>Name: ' + players[i].name + '</h2>'; 
    player_profile += '<p>Age: ' + players[i].age + '</p>'; 
} 

document.write(player_profile); 
+0

ありがとう!たくさんの意味があります! – trailrunner89

関連する問題