使用变量的名称,然后为变量定义函数

时间:2012-08-28 23:28:58

标签: javascript

我已经看到这种情况暂时在一些javascript中徘徊了一段时间,并且想知道这意味着什么。

在此代码中:

var topics = {};

jQuery.Topic = function( id ) {

    var callbacks,
        topic = id && topics[ id ];
    if ( !topic ) {
        callbacks = jQuery.Callbacks();
        topic = {
            publish: callbacks.fire,
            subscribe: callbacks.add,
            unsubscribe: callbacks.remove
        };
        if ( id ) {
            topics[ id ] = topic;
        }
    }
    return topic;
};

为什么变量主题在它之前有id &&

2 个答案:

答案 0 :(得分:2)

&&运算符如果是“falsy”则产生第一个操作数,如果第一个操作数不是“falsy”则产生第二个操作数。因此,您可以将此代码读作:

  

如果给这个函数一个参数¹,那么让主题为topics[id]   undefined如果没有。

     

¹将false0或其他虚假值作为参数传递将导致topic获取   这个价值,但阅读代码不会留下你应该做的印象   这一点。

答案 1 :(得分:1)

该行正在做的是确保id在尝试使用之前是一个真值。这可能不是一个好主意,因为它会使topics[0]无法访问。

topic = id && topics[id]大致相当于if( id) topic = topics[id]; else topic = id;