對不起,如果這是重複的,但我已經閱讀了一些關於變量範圍的帖子,我似乎無法弄清楚這一點。任何幫助深表感謝。javascript和d3.js變量作用域:變量重置函數調用外
基本上,我只是想讀取一個csv並確定它有多少行,然後將數字分配給一個全局變量。這裏是我的代碼:
<script src="https://d3js.org/d3.v4.min.js" charset="utf-8"></script>
<script type="application/javascript">
var maxEpochs;
setMaxEpochs();
console.log(maxEpochs);
function setMaxEpochs() {
/*
for (i = 0; i < 2; i++) {
if (document.chooseModel.model[i].checked) {
modelChoice = document.chooseModel.model[i].value;
break;
}
}
console.log(modelChoice);
*/
// set initial value for maxEpochs I DON'T UNDERSTAND WHY THIS DOESN'T WORK
d3.csv("epochStats.csv", function(d) {
console.log(d.length);
maxEpochs = d.length;
console.log(maxEpochs);
});
console.log(maxEpochs);
}
</script>
注:epochStats.csv
只是必須有與它的幾行CSV。這個數據對於這個例子並不重要。
所以,當我運行此我得到以下輸出在我的控制檯:
maxEpochsFail.html:31 undefined
maxEpochsFail.html:12 undefined
maxEpochsFail.html:27 101
maxEpochsFail.html:29 101
行號可能不完全匹配(我在上面一些<head>
標籤等),但問題是,函數print 100
中的前兩個console.log是正確的編號,但是一旦我在該函數之外,它將恢復爲undefined
。
對此的任何想法將不勝感激。我有點用頭撞牆。 謝謝, Seth
我不會關閉這個問題(是的,這是一個重複的!),因爲我覺得你的頭被撞到牆上對不起!這裏是一個很好的閱讀你:http://stackoverflow.com/questions/6847697/how-to-return-value-from-an-asynchronous-callback-function。請閱讀Felix Kling的答案,這是值得的。 –