2017-04-26 68 views
0

我很抱歉,如果我的標題以任何方式混淆。我想弄清楚如何正確地做到這一點。我試圖創建一個對象whos鍵:值是其他對象。請參閱下面的代碼。我正在Chrome控制檯中進行測試。如何返回在函數中創建的對象?

如果我只是做Characters = CharactersFn("male");var Characters = CharactersFn("male");本身,我可以創建從CharactersFn()函數的對象,但是當我試着通過whatAreYou()功能做到這一點我沒有得到任何結果。我如何正確地做到這一點?

注:我仍在學習,只是試圖掌握如何正確地做事情。

var Characters, 
    valueArr = [],  
    nameArr = [],   
    matchArr = []; 

var CharactersFn = function (ans) {  //Are you male or female? 
    "use strict"; 
    if (ans === "male") { 
     Characters = { 
      47: aloy, 
      snake: snake, 
      drake: drake, 
      cloud: cloud 
     }; 
    } 

    if (ans === "female") { 
     Characters = { 
      aloy: aloy, 
      bayonetta: bayonetta, 
      elizabeth: elizabeth, 
      ellie: ellie 
     }; 
    } 
    return Characters; 
}; 

function whatAreYou() { 
    "use strict"; 
    var gender = prompt("0 or 1"); 

    if (gender === 0) { 
     Characters = CharactersFn("female"); 
    } 
    if (gender === 1) { 
     Characters = CharactersFn("male"); 
    } 
     return Characters; 
} 
+0

' 「使用嚴格的」;'應該是一個JS文件的頂部,而不是一個函數內部。 http://stackoverflow.com/questions/1335851/what-does-use-strict-do-in-javascript-and-what-is-the-reasoning-behind-it – evolutionxbox

+0

感謝您的注意! –

回答

4
var gender = prompt("0 or 1"); 
if (gender === 0) { 
if (gender === 1) { 

prompt函數返回一個字符串。結果將是從不匹配您的if陳述。

您需要對比"0""1"而不是01

+0

此外,'prompt'可能會返回null,這在代碼中沒有涉及。 – Xufox

+0

@Xufox我肯定會檢查一下。我只是試圖儘量減少我的例子,以顯示我正在嘗試做什麼 –

+0

@Quentin看起來像它!這總是那些簡單的事情之一。我應該更清楚地知道。 –

0

當您調用它時,您將設置的全局字符對象等於您的CharactersFn中的一個對象。然後你還從CharactersFn中返回全局的Characters對象。然後在你的whatAreYou函數中,你將全局的Characters對象設置爲CharactersFn的結果(就像我說你已經返回了全局的Characters對象)。您還在創建帶有引用未定義變量的值的對象,因此我將它們更改爲字符串值。另外,如上所述,您正在使用字符串和整型值的等式比較(===)。如果你使用==,那麼它會工作,但與===值需要是相同的。

這是一個更新後的版本,它將全局的Characters對象設置爲我修改過的CharactersFn的結果,以返回它們自己的對象。

var Characters = {}, 
 
    valueArr = [],  
 
    nameArr = [],   
 
    matchArr = []; 
 

 
var CharactersFn = function(ans) { 
 
    if (ans === "male") { 
 
     return { 
 
      47: "aloy", 
 
      snake: "snake", 
 
      drake: "drake", 
 
      cloud: "cloud" 
 
     }; 
 
    } 
 

 
    if (ans === "female") { 
 
     return { 
 
      aloy: "aloy", 
 
      bayonetta: "bayonetta", 
 
      elizabeth: "elizabeth", 
 
      ellie: "ellie" 
 
     }; 
 
    } 
 
    return Characters; 
 
}; 
 

 
function whatAreYou() { 
 
    var gender = prompt("0 or 1"); 
 

 
    if (gender === "0") { 
 
     Characters = CharactersFn("female"); 
 
    } 
 
    if (gender === "1") { 
 
     Characters = CharactersFn("male"); 
 
    } 
 
     return Characters; 
 
} 
 

 
console.log(Characters); 
 
whatAreYou(); 
 
console.log(Characters);

+0

我會記住所有這一切。在這裏我不會改變的唯一的事情就是你改變的地方就是你說的「我用創建帶有引用未定義變量的值的對象」。我想我的描述不夠清楚,但這些其實是其他的對象。在我的示例中沒有定義它們,因爲我想盡可能簡化示例。 –

相關問題