javascript - 这个压缩后的 JS 与未压缩版本有何相同之处?

标签 javascript

这就是我未压缩的样子:

function extractDropdownValues(){     
  var all_selected = true;
  $('.variant_options select').each(function() { 
      if (this.selectedIndex == 0) {
          all_selected = false;
      }
  });

这是压缩版本:

extractDropdownValues(){var e=!0;$(".variant_options select").each(function(){this.selectedIndex==0&&(e=!1)});

我对 e=!0 相当于 all_selected = true 以及 this.selectedIndex==0< 的压缩版本感到困惑 if 语句。在压缩版本中,它表示if此索引== 0,则将其设置为 false。

但在压缩版本中,看起来它正在检查 selectedIndex 是否等于 0 AND && for all_selected = false (即e=!1)。但我不希望将其作为 if 条件,那应该是满足 if 条件后的结果。

我读错了吗?

附注压缩版本无法在生产中使用,但未压缩版本可以在开发中使用。我不确定这两者是否相关,但从表面上看,它们对我来说似乎并不相同。

编辑 1

正如我所怀疑的,我通过 JS prettifier 运行了缩小的 JS,结果如下:

function extractDropdownValues() {
    var e = !0;
    $(".variant_options select").each(function () {
        this.selectedIndex == 0 && (e = !1)
    });

苏...啊...这里发生了什么?

最佳答案

bool 形式的 0 为 false,因此 0(假)的 bool 否定为 true。

同样, bool 形式的 1 为 true,因此 1(true)的 bool 否定为 false。

&& 是短路“与”运算符,这意味着一旦它知道其结果是什么,它就会立即返回 - 如果其第一个操作数为 false,则返回 false。如果其第一个操作数为 true,则仅计算第二个操作数并返回该结果。

因此,仅当 this.selectedIndex==0 为 true 时,e=!1 才会执行(因为如果为 false,它知道它将返回 false 并提前中止) .

关于javascript - 这个压缩后的 JS 与未压缩版本有何相同之处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15652221/

相关文章:

javascript - 如何在javascript slider 中淡入淡出?

javascript - 提交表单时出现错误 Cannot POST/public/register-controller

javascript - Base64 编码图像警报正确,响应为零

javascript - 在reactjs中切换下拉菜单

javascript - 在数组中传递 boolean 求值结果的语法?

javascript - 将带有预签名 URL 的分段上传从 aws javascript sdk v2 迁移到 v3

javascript - 如何在移动应用程序中显示 WP 帖子中的媒体(视频)

javascript - jquery,点击div内的任何地方,除了某些 child

javascript - AJAX 成功对象中未捕获类型错误

javascript - 如何在 Phaser 中的 mapLayer 上获取平铺类型