次のコードブロックを実行してください。 returnステートメントはありませんが、MyApp.VideoTrackerはウィンドウオブジェクトのプロパティなので、グローバルにアクセスできます。Javascript IIFE、この変数がどのようにグローバルになるかわからない
(function(window, $, VideoTracker, undefined) {
"use strict";
VideoTracker.loadAPI = function(apiReadyCallbackFn) {
};
VideoTracker.destroy = function(iframeElement) {
};
VideoTracker.trackVideos = function() {
};
$().ready(function() {
var youTubeIframes = $('iframe[src*="youtube.com"]');
if (youTubeIframes.length > 0) {
VideoTracker.loadAPI(VideoTracker.trackVideos);
}
});
}(window, jQuery, MyApp.VideoTracker = MyApp.VideoTracker || {}));
なぜならそれは関数呼び出しで定義されている方法、すなわちのこのです:
MyApp.VideoTracker = MyApp.VideoTracker || {}
私はこれが理由である必要があります見ることができますが、理解していないような説明は、素晴らしいことですどうして?
はい、本当に割り当てです。 MyApp.VideoTrackerを渡すだけ|| {}。しかしMyAppがどこから来ているかは疑問です。 – Lain
が動作するためには、 'MyApp'が既にウィンドウオブジェクトになければなりません。つまり、' MyApp'コードのその時点で=== 'window.MyApp' ...' MyApp'がオンでなかった場合ウィンドウオブジェクトで、コードが実行されず、 'ReferenceError:MyApp is defined'エラーが発生します。 –
Cool MyAppは既にウィンドウのプロパティです。私はあなたが関数呼び出しで代入することができないと気づいた – DavidB