function getTime(zone, success) {
var url = 'http://json-time.appspot.com/time.json?tz=' + zone,
    ud = 'json' + (+new Date());
window[ud]= function(o){
    success && success(new Date(o.datetime), o);
};
document.getElementsByTagName('head')[0].appendChild((function(){
    var s = document.createElement('script');
    s.type = 'text/javascript';
    s.src = url + '&callback=' + ud;
    return s;
})());}
window[ud]的用途是什么?success && success()是什么意思?
另一个问题是,为什么在匿名函数之外调用appendChild时在最后一行需要额外的一对括号?

最佳答案

success && success(...)基本上表示“如果success存在,请调用success()”。等效于以下内容:

if(success) {
    success(new Date(o.datetime), o);
}
window[ud]的意思是“window的属性,名为ud。”因此,如果ud是(例如)"json12341234",那么它将等效于window.json12341234

多余的一对括号调用匿名函数。因此,您无需传递该函数,而是传递结果。

09-20 22:01