在函数javascript中遇到True虚假语句,有什么意义?

时间:2019-06-01 16:24:07

标签: javascript function boolean

我从共享点撕下了一些代码,发现它们的功能中包含随机的true false语句。我首先想到的是它们将阻止运行下一条语句,但是当我进行简单测试时,控制台日志显示该语句无论如何都可以运行。

有人能让我知道这是什么意思,目的是什么,为什么要这么做。

这是我遇到的一个示例,并将发布我的测试。

AsyncLazy<T>

这是我的测试,控制台窗口击中了我认为不会的所有console.logs

public sealed class AsyncLazy<T>
{
  private readonly object _mutex;
  private readonly Func<Task<T>> _factory;
  private Lazy<Task<T>> _instance;

  public AsyncLazy(Func<Task<T>> factory)
  {
    _mutex = new object();
    _factory = RetryOnFailure(factory);
    _instance = new Lazy<Task<T>>(_factory);
  }

  private Func<Task<T>> RetryOnFailure(Func<Task<T>> factory)
  {
    return async () =>
    {
      try
      {
        return await factory().ConfigureAwait(false);
      }
      catch
      {
        lock (_mutex)
        {
          _instance = new Lazy<Task<T>>(_factory);
        }
        throw;
      }
    };
  }

  public Task<T> Task
  {
    get
    {
      lock (_mutex)
        return _instance.Value;
    }
  }

  public TaskAwaiter<T> GetAwaiter()
  {
    return Task.GetAwaiter();
  }

  public ConfiguredTaskAwaitable<T> ConfigureAwait(bool continueOnCapturedContext)
  {
    return Task.ConfigureAwait(continueOnCapturedContext);
  }
}

1 个答案:

答案 0 :(得分:0)

&&不仅返回值。它还具有(流控制)效果:仅在第一个操作数为true时才评估第二个操作数。也就是说,如果A && B已经是B,则A不会运行false。 (这称为short-circuit evaluation。)

换句话说,

typeof window.WebForm_OnSubmit == "function" && window.WebForm_OnSubmit();

表现像

if (typeof window.WebForm_OnSubmit == "function")
    window.WebForm_OnSubmit();

但略短些。

重点不是返回truefalse(结果将被忽略);关键是仅在定义为函数的情况下调用window.WebForm_OnSubmit

类似地,

!bValidSearchTerm && _ClearSearchTerm("");

类似:

if (!bValidSearchTerm)
    _ClearSearchTerm("");