“的含义!!”&引用;在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供您评论!我知道这行后面的数据值将是布尔值,但在我的情况下,结果是一个对象,请查看更新的描述谢谢。我已经更新了答案,也检查了你答案评论中的链接,因为其他用户已经为你指出了正确的方向。不客气,伙计:)