Javascript 强制布尔值超出JS函数范围

Javascript 强制布尔值超出JS函数范围,javascript,Javascript,我只想在下面的滚动事件侦听器中运行一次if语句。现在我认为它不起作用,因为每次有一个scroll动作将scroll25重置为false时,函数都会运行,因此每次都会使if语句为true。我是否可以强制scroll25的布尔值在该函数的作用域之外为true,以便scroll侦听器可以继续运行,并且只让if语句工作一次 document.addEventListener("scroll", scrollTracking); function scrollTracking() { var scr

我只想在下面的滚动事件侦听器中运行一次if语句。现在我认为它不起作用,因为每次有一个scroll动作将scroll25重置为false时,函数都会运行,因此每次都会使if语句为true。我是否可以强制scroll25的布尔值在该函数的作用域之外为true,以便scroll侦听器可以继续运行,并且只让if语句工作一次

document.addEventListener("scroll", scrollTracking);

function scrollTracking() {
  var scroll25 = false;

  // Get client heights, 100%, 25% and 50%
  var clientHeight = document.body.clientHeight;
  var perc25 = clientHeight * .25;
  var perc50 = clientHeight * .50;
  console.log('25%: ' + perc25 + ', 50%: ' + perc50);

  // Log scroll position from top of document.
  var scrollTop = document.body.scrollTop;
  console.log(scrollTop);

  // If scroll is within the clientHeight range of 25% - 50%, log 
  // message once.
  if (scrollTop >= perc25 && scrollTop < perc50 && !scroll25) {
    console.log("25% Reached. Success.");
    scroll25 = true;
  }
 }
document.addEventListener(“滚动”,滚动跟踪);
函数scrollTracking(){
var=25=false;
//获得客户高度,100%、25%和50%
var clientHeight=document.body.clientHeight;
var perc25=clientHeight*.25;
var perc50=clientHeight*.50;
log('25%:'+perc25+',50%:'+perc50);
//从文档顶部记录滚动位置。
var scrollTop=document.body.scrollTop;
控制台日志(scrollTop);
//如果滚动在25%-50%的客户重量范围内,则记录
//留言一次。
如果(scrollTop>=perc25&&scrollTop

Codepen:

我只是在函数之外声明它

差不多

document.addEventListener("scroll", scrollTracking);

var scroll25 = false;

function scrollTracking() {


  // Get client heights, 100%, 25% and 50%
  var clientHeight = document.body.clientHeight;
  var perc25 = clientHeight * .25;
  var perc50 = clientHeight * .50;
  console.log('25%: ' + perc25 + ', 50%: ' + perc50);

  // Log scroll position from top of document.
  var scrollTop = document.body.scrollTop;
  console.log(scrollTop);

  // If scroll is within the clientHeight range of 25% - 50%, log 
  // message once.
  if (scrollTop >= perc25 && scrollTop < perc50 && !scroll25) {
    console.log("25% Reached. Success.");
    scroll25 = true;
  }
 }
document.addEventListener(“滚动”,滚动跟踪);
var=25=false;
函数scrollTracking(){
//获得客户高度,100%、25%和50%
var clientHeight=document.body.clientHeight;
var perc25=clientHeight*.25;
var perc50=clientHeight*.50;
log('25%:'+perc25+',50%:'+perc50);
//从文档顶部记录滚动位置。
var scrollTop=document.body.scrollTop;
控制台日志(scrollTop);
//如果滚动在25%-50%的客户重量范围内,则记录
//留言一次。
如果(scrollTop>=perc25&&scrollTop
怎么样?这是可行的,但是我的上述功能正在进行中,我计划添加额外的if语句,需要侦听器注意。(例如,达到50-75%范围的客户重量的日志)。在这种情况下,我不想让听众都停下来。