2014-10-04 2 views
-3
$(".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를 처음 사용하고 흥미로운 코드를 읽고 배우려고합니다.자바 스크립트 코드 로직

위 코드를 이해하도록 도와주세요. n = 0은 무엇을 의미합니까?

이것은 무엇이며 어떻게 작동합니까?

t.hasOwnProperty(e) && t[e] == i[e] || (n = !1) 
(n || 0 == i.length) && (e.id = $(this).data("id") 

무엇 사이의 쉼표입니까?

답변

0

이것은 공백이 다시 추가 된 코드입니다. 그것은 인간이 읽는 것을 의미하지 않으며 가능한 한 짧아야합니다. 그 때문에 다음과 같은 이상한 점이 있습니다 :

!0 === true // 0 evals to false, "not false" = true 

쉼표는 단순히 새로운 명령을 추가하는 방법입니다. 그것들은 JavaScript에서 세미콜론과 매우 비슷합니다 (동일하지는 않지만). 예 :

if(!(t.hasOwnProperty(e) && t[e] == i[e]){ 
    n = false; 
} 
: 당신은 hasOwnProperty 비트가 효과적이다 x=5, y=10

을 쓸 수 있습니다