Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“的含义!!”&引用;在Javascript中_Javascript_Ajax - Fatal编程技术网

“的含义!!”&引用;在Javascript中

“的含义!!”&引用;在Javascript中,javascript,ajax,Javascript,Ajax,我也不明白这句话 data: !!data && _.mapObject(data, ... 以下JS代码中“!!”的含义是什么 $.ajax({ type: "POST", url: url, dataType: "json", async: true, data: !!data && _.mapObject(data, function(value) { return $.toJSON(value);

我也不明白这句话

data: !!data && _.mapObject(data, ... 
以下JS代码中“!!”的含义是什么

$.ajax({
  type: "POST",
  url: url,
  dataType: "json",
  async: true,
  data:
    !!data &&
    _.mapObject(data, function(value) {
      return $.toJSON(value);
    }),
  statusCode: {
    500: function() {},
  },
  success: function(response) {
    if (_.isUndefined(response.isDocument)) {
      response.isDocument = that._currentSearch.type == "document";
    }

    if (response && response.searchResult) {
      $(response.searchResult.hits).each(function(i, item) {
        item.uniqueHitId = SearchModel.generateUniqueHitId();
        searchModel._cacheResult[item.uniqueHitId] = item;
      });

      successHandler(response, that.isFacetListFound, adaptHighlights, filters);
    } else {
      errorHandler("No result found", response.Error);
    }
  },
  error: errorHandler,
});
正常情况下!!如果定义了此对象,则将对象强制转换为真值,但在我的情况下,此行后的数据内容为:

{
message: "data is not defined"
stack: "ReferenceError: data is not defined"}
请从执行的调试结果中查看此屏幕截图:
AKAdoble not运算符用于证明该值为
布尔值
或将其转换为
布尔值

使用的好处之一!!表示您的设计决定只返回真值或假值。当您或其他人看到该代码时!!遇到时,唯一可能的返回值为true或false。使用此逻辑工具是否能提高可读性是一个争论的问题

使用最常见的批评!!它似乎增加了复杂性,可以通过稍微增加一些代码来简化,这些代码可能具有更大的灵活性。另一种批评认为零是一个虚假的值,因此许多与数字相关的用例都带有额外的担忧

参考:


&&
运算符将参数作为
布尔值(
!!data
)计算在它前面,如果它是
真的
,它将返回运算符后面的参数(
\.mapObject(data,
),否则它将返回false

!!
而不是
这是一种使事情真实化的常见方法。-它可能是一个更相关的复制,因为它涵盖了这两个方面questions@Liam更多是使事情真实的一种常见方式吗?你说“不”是什么意思?你能让我更明白吗?谢谢你ou供您评论!我知道这行后面的数据值将是布尔值,但在我的情况下,结果是一个对象,请查看更新的描述谢谢。我已经更新了答案,也检查了你答案评论中的链接,因为其他用户已经为你指出了正确的方向。不客气,伙计:)