2013-03-29 58 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

相关问题