我正在嘗試閱讀原型來源。我已經到了這個部分(不幸的是,這個片段正在開始)。JavaScript中的函數聲明之後的空括號()是什麼?
這是什麼意思?
Browser: (function(){
var ua = navigator.userAgent;
var isOpera = Object.prototype.toString.call(window.opera) == '[object Opera]';
return {
IE: !!window.attachEvent && !isOpera,
Opera: isOpera,
WebKit: ua.indexOf('AppleWebKit/') > -1,
Gecko: ua.indexOf('Gecko') > -1 && ua.indexOf('KHTML') === -1,
MobileSafari: /Apple.*Mobile.*Safari/.test(ua)
}
})(),
我指的是逗號前的最後一行?
注意:根據jslint,您應該將最後執行的括號移到函數圓括號內:'(function(){...}() )' – ErikE 2011-06-16 05:46:29
@ErikE他們最終做同樣的事情,雖然。看到這個問題:http://stackoverflow.com/questions/6645766/why-are-parenthesis-used-to-wrap-a-javascript-function-call – 2012-12-05 22:59:31
沒有任何爭論,他們做同樣的事情。這是一種文體上的考慮,因爲通過不將執行括號放在外部對中,可能不清楚返回的是結果*而不是函數本身*。 – ErikE 2012-12-05 23:11:57