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
。多余的一对括号调用匿名函数。因此,您无需传递该函数,而是传递结果。