【问题标题】:Jquery each loop not exiting by return 0Jquery 每个循环都没有通过 return 0 退出
【发布时间】:2015-06-22 15:48:55
【问题描述】:

each 循环退出时,return 0 不起作用。但是,将其更改为 return false 效果很好。

Fiddle here

return 0 可以正常退出常规 JavaScript 循环 (while,for)。是不是破坏了统一性!

【问题讨论】:

  • @JohnGreen 这和这个问题有什么关系?
  • 不明显有什么区别吗?一个是数字,另一个是布尔值。 0 不是假的。
  • @Vikrant - 不理解这个问题并没有错。是的,return 0 确实意味着退出循环。 Return anything 表示退出循环。 $.each 本身并不是一个循环。
  • @JohnGreen 好的,我明白你的意思,但这个问题远不是那个问题的重复
  • @Vikrant,你明白我的意思。抱歉,发布的“问题文本”太笼统了。基本上,共同点是——如果 For & While 循环通过返回 0 退出/中断,为什么不 jQUery“每个”!它不会破坏均匀性吗?

标签: javascript jquery return


【解决方案1】:

jQuery documentation

我们可以通过使回调函数返回false,在特定的迭代中打破$.each() 循环。返回 non-false 与 for 循环中的 continue 语句相同;它将立即跳到下一次迭代。

JSFiddle as example

【讨论】:

    【解决方案2】:

    区别只是0false不完全相同。

    通常当需要一个布尔值时,任何值都可以使用,并且会被转换为布尔值。在这种情况下,0 将转换为 false

    在 jQuery $.each 循环中不起作用。如果您没有专门从函数返回任何内容,则返回值为undefined。如果将其转换为布尔值,也将变为false

    $.each 方法不会将返回值转换为布尔值,它专门寻找值false。任何其他值都会让循环继续。

    【讨论】:

      【解决方案3】:

      简单地说,0 !== false。

      在您自己的代码中,您有时可能会检查类似错误的答案:

      0 == false;  // true
      null == false;  // true.
      

      然而,jQuery(正确地如此)使用严格相等 (===) 运算符。

      这样:

      0 === false; // false
      null === false;  // false
      false === false; // true
      

      如果从根本上说这是一个身份与平等问题: Which equals operator (== vs ===) should be used in JavaScript comparisons?

      【讨论】:

        【解决方案4】:

        要中断$.each 循环,您在循环回调中拥有return false

        返回任何其他内容会跳到下一次迭代,相当于一个 continue 在正常循环中。

        Refer Document

        【讨论】:

          【解决方案5】:

          使用 return 0,将返回零,这是一个数字。使用 return false 表示没有什么可以返回,或者不返回。

          【讨论】:

          • 使用return false;并不是说没有什么可以返回,而是返回值false。你可能会想到return;,它会在不设置特定返回值的情况下返回,将其保留为undefined
          • return false 表示立即停止函数中的操作并退出
          • @Guffa 好吧,我错了。谢谢。
          • @Vikrant buddy return 的意思是这样,而不是 return false。 “false”是函数将返回的值。
          猜你喜欢
          • 2017-12-05
          • 2015-06-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-06-14
          • 2016-08-05
          • 1970-01-01
          相关资源
          最近更新 更多