我對JavaScript相當陌生,甚至對流星來說更新,對於我所瞭解的關於可變範圍和現實的瞭解有點困惑。所以我有這個流星事件幫手:流星可變範圍
Template.test.events({
'click .selector': function (e) {
e.preventDefault();
var someArray = [1,2,3,4];
var someVariable = "jquery slector data";
console.log(someVariable); //this works as expected
someArray.each(function(index, el) {
console.log(someVariable); //not defined?
})
}
})
我的印象是,任何變量對外宣稱我。每個功能將可在它的內部?但是我沒有定義。這是一個流星特定的東西或一般的JavaScript?另外,如何讓變量在.each函數中可訪問,而不使它們成爲全局變量?我不認爲在.each循環中定義我的變量將是理想的,因爲這意味着多次訪問DOM。
謝謝。
感謝您的回覆。我將你的例子複製到我的Chrome控制檯中,它可以工作。 'console.log(someVariable)'返回「jquery選擇器數據」。 但是,當我在我的Meteor事件處理程序中放入完全相同的代碼時,我在forEach循環中得到了「未定義」。 – user2209090
嗯,它對我來說工作得很好。顯示我用來測試它的代碼[這是一個要點](https://gist.github.com/sbking/11239824)。你能發佈你的完整的代碼嗎? – sbking
其實它工作! (在這裏仍然在學習)...我在做的是在forEach循環中暫停代碼執行,並在控制檯中手動輸入'someVariable'並且失敗。但是,如果在執行事件之前在forEach循環中包含'someVariable',那麼'console.log'確實是正確的數據。我想這基於Javascript的關閉是有意義的。再次感謝您的解釋。 – user2209090