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

Using the name of a variable and then defining a function for the variable

本文关键字:变量 定义 然后 函数      更新时间:2023-09-26

我看到它在一些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 &&

如果第一个操作数为"falsy",&&运算符将产生第一个操作,如果第一个运算数不是"falsy",则产生第二个操作。所以,你可以把这个代码读成:

如果给这个函数一个参数,则让主题为topics[id],或者如果不是undefined

false0或其他错误值作为参数传递会导致topic该值,但阅读代码不会给人留下应该这样做的印象那个

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

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