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

演算子は、最初のオペランドが "falsy" の場合は&&結果を返し、最初のオペランドが "falsy" でない場合は 2 番目のオペランドを返します。したがって、このコードは次のように読むことができます。

topics[id]この関数にパラメーター¹が指定されている場合、または指定されて いない場合はトピックとしますundefined

¹ またはその他の誤った値をパラメーターとして渡すfalse0topicその値が取得されますが、コードを読んでも、それを行う必要があるという印象は残りません。

于 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 に答える