我对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