EDIT:を追加しましたOBJECTif文と範囲をJavaScriptで
私は、変数、関数から返される前に消えているようだ、関数の本体内で宣言された変数との問題を抱えている:
var customerData = {
'Joe': {
visits: 1
},
'Carol': {
visits: 2
},
'Howard': {
visits: 3,
},
'Carrie': {
visits: 4
}
};
function greetCustomer(firstName) {
var greeting = '';
for(var key in customerData){
if(key === firstName){
if(customerData[key]['visits'] === 1){
greeting = "Welcome back, " + firstName + "! We're glad you liked us the first time!";
console.log(greeting); // here to illustrate issue
}
else if(customerData[key]['visits'] > 1){
greeting = "Welcome back, " + firstName + "! So glad to see you again!";
console.log(greeting);
}
}
else{
greeting = "Welcome! Is this your first time?"
}
}
return greeting;
}
greetCustomer("Joe");
そして出力:
Welcome back, Joe! We're glad you liked us the first time! // here is the correct greeting from the console output
=> 'Welcome! Is this your first time?' // this is what I got
Welcome back, Carol! So glad to see you again! // correct output again
=> 'Welcome! Is this your first time? // base case again.
が表示されないgreeting
べき機能全体のために代入の値とにもアクセスできますか?私はを知っています私はブランチから挨拶を返すことができますが、私はここで何を見ているのかは分かりませんが、誰かが説明できることを願っています。ありがとう。
あなたの出力が明確ではありません!もっと説明してください!あなたは何を期待していますか? –
あなたはデータをループしており、すべての反復は何かを 'greeting'変数に書き出します。最後の反復で設定された値だけが返されます。 – JJJ
変数は、関数全体を通して絶対に見えます。あなたのエラーは別の場所にあります – artemisian