Javascript代码逻辑
问题描述:
$(".combinations .combination").each(function() {
if ($(this).data("id")) {
var i = {};
$(this).find(".metric").each(function() {
i[$(this).data("name")] = $(this).data("value")
});
var n = !0;
$.each(i, function (e) {
t.hasOwnProperty(e) && t[e] == i[e] || (n = !1)
}), (n || 0 == i.length) && (e.id = $(this).data("id"), e.url = $(this).data("url"), e.link = $(this).data("link"), e.name = $(this).data("name"), e.image = $(this).data("image"))}
}),
我是JavaScript新手,试图通过阅读有趣的代码来学习。Javascript代码逻辑
请帮我理解上面的代码; n =!0是什么意思?
这是什么和它是如何工作的?
t.hasOwnProperty(e) && t[e] == i[e] || (n = !1)
(n || 0 == i.length) && (e.id = $(this).data("id")
它们之间的逗号是什么意思?
答
这是已重新添加了空格的缩小代码。这并不意味着被人类阅读,它的意思是尽可能短。正因为如此,有这样的奇怪的东西:
!0 === true // 0 evals to false, "not false" = true
逗号只是一种添加新指令的方法。它们与JavaScript中的分号非常相似(尽管不完全相同)。例如你可以写x=5, y=10
的hasOwnProperty
位实际上是:
if(!(t.hasOwnProperty(e) && t[e] == i[e]){
n = false;
}