0

我已经看到这个在一些 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 &&之前有?

4

2 回答 2

2

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

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

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

于 2012-08-28T23:33:08.293 回答
1

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

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

于 2012-08-28T23:32:40.977 回答