Javascript函数在返回时不会中断?

ero*_*ebe 6 javascript loops return break

我知道你应该能够通过返回来突破每个语句,这是我正在尝试做的事情,但我必须做错事,看起来很简单,我找不到它.

我有这样的代码

function create() {
  var test = hasThing();
  if (test) {
    $('#myForm').submit();
  } else {
    alert('you suck!')
  }
}

function hasThing() {
  $('.selects').each(function() {
    if (this.value != "") {
      return true;
    }
  });
  return false;
}
Run Code Online (Sandbox Code Playgroud)

我在"return true"上设置了断点 然后点击它但是var测试总是假的,因为由于某种原因,.each()循环继续并且hasThing()函数继续.我已经尝试切换周围的东西,以便我在.each()中返回false,以防万一由于某些原因重要但它没有改变任何东西.

我不明白.似乎与文档说它应该如何工作相反.

dee*_*see 15

您的return true;语句从给定的匿名函数返回each.return false;始终执行该行,这解释了为什么var test总是错误的.

将您的代码更改为

function hasThing() {
  var hasThing = false;
  $('.selects').each(function() {
    if (this.value != "") {
      hasThing = true;
      return false; // breaks the $.each, but does not return from hasThing()
    }
  });
  return hasThing;
}
Run Code Online (Sandbox Code Playgroud)