【问题标题】:Javascript code logicJavascript代码逻辑
【发布时间】:2014-10-04 03:45:48
【问题描述】:
$(".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")

它们之间的逗号是什么意思?

【问题讨论】:

    标签: javascript jquery logical-operators


    【解决方案1】:

    这是重新添加了空格的缩小代码。它不是要供人类阅读,而是要尽可能短。因此,有一些奇怪的事情,例如:

    !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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多