如何在javascript回调函数中传递全局变量?

如何在javascript回调函数中传递全局变量?,javascript,callback,global-variables,Javascript,Callback,Global Variables,我想将一个全局变量传递给javascript。每个函数在迭代过程中保留其值 这是代码 var year = false; page.posts.each(function(item, year){ year = true; }); 这一年仍然是假的。年如何在迭代中保持其值?函数参数和全局变量之间存在名称冲突。由于函数参数名更接近于执行的代码,当JavaScript通过变量名查找以了解您的意思时,它会首先找到参数名,因此这就是设置 如果要显式设置全局变量,必须通过窗口访问它,即 wi

我想将一个全局变量传递给javascript。每个函数在迭代过程中保留其值

这是代码

 var year = false;
 page.posts.each(function(item, year){
   year = true;
 });

这一年仍然是假的。年如何在迭代中保持其值?

函数参数和全局变量之间存在名称冲突。由于函数参数名更接近于执行的代码,当JavaScript通过变量名查找以了解您的意思时,它会首先找到参数名,因此这就是设置

如果要显式设置全局变量,必须通过
窗口
访问它,即

window.year = true; // explicit global

变量名中存在冲突

var year = false;
 page.posts.each(function(item, yr){
   year = true;
 });

尝试附加到窗口文档并查看

 window.year = false;
 page.posts.each(function(item, year){
   year = true;
 });

您可以重命名变量year以避免冲突,或者如果您只想更改全局变量,则应使用window.year=true

page.posts.each(function(item, year){
   year = true;  
});

这听起来很傻,但是你真的调用了这个函数吗?是的。该函数将为page.posts中的每个元素调用。它实际上是在ejs上下文中,我仍然可以使用此方法吗?我不知道ejs中的变量是否为全局变量;另一个解决方案是重命名变量,这样就不会发生冲突。