2013-03-29 57 views
2

試圖將變量'randomWord'輸出到console.log,但chrome說它沒有被定義。 它看起來像是我定義的。爲什麼不打印到console.log?控制檯日誌不能從函數打印變量

function strt(){ 

//get random word from words[] array 
var randomWord = words[Math.floor(Math.random()* words.length)]; 

var wordLength = randomWord.length; 


//create a blank boxes or div elements for holding each letter of 
// selected random word 
for(i = 0 ; i< wordLength; i++){ 

var divTag = document.createElement("div"); 
divTag.id = "div" + i; 
divTag.className = 'wordy'; 
//divTag.innerHTML = randomWord[i]; 
hangManDiv.appendChild(divTag); 

};// end for loop 

//disable start button 
document.getElementsByName("startB")[0].disabled = true; 

return randomWord; 

}//end strt() 

console.log(randomWord); 
+0

你在函數外面調用console.log嗎? randomWord var只在函數的範圍內定義 - 你需要這樣做:'console.log(strt());' – Adidi

+0

你在哪裏調用'strt'? –

+0

該變量已定義,但對函數strt()是_local_。將'console.log'移到return語句之前。 – andyb

回答

5

變量randomWord超出了範圍。您可以在一個函數內定義該變量,然後將其稱爲,其外部爲

您應該定義變量出來的功能或把它的這裏面:

function strt(){ 
    var randomWord; 
    ... 
    console.log(randomWord); 
    return randomWord; 
}//end strt() 

或者

var randomWord; 
function strt(){ 
    ... 
    return randomWord; 
}//end strt() 
strt(); // Call the function 
console.log(randomWord); 

對於後者,認爲randomWord不會改變的時候JS執行控制檯日誌功能;因此,它將是空的。換句話說,您必須在您登錄之前調用該函數。

+0

「變量」是什麼?特異性會是一個改進。 :)另外,你的第二個代碼塊需要顯示'strt();'。第三種,也許比在函數外面聲明'randomWord'更好的選項是'console.log(strt());'。 – ErikE

+0

@ErikE:剛剛編輯它。感謝您指出它... – JCOC611

+0

@ErikE:是的,儘管我會保留它,因爲它更好地說明了這一點,以免混淆他人。例如,如果有人想console.log多個變量... – JCOC611

相關問題